Compare commits
216 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f50603a5fc | ||
|
|
164dcfe65b | ||
|
|
fb356b1344 | ||
|
|
a3d91ae318 | ||
|
|
65b4f58703 | ||
|
|
54551c7d6e | ||
|
|
d877e3fcac | ||
|
|
dbfe7dd42e | ||
|
|
45b4187596 | ||
|
|
44c63795a7 | ||
|
|
36244ac1ff | ||
|
|
d3790feac0 | ||
|
|
b63aca9a2c | ||
|
|
8f2f2a0d9d | ||
|
|
5d57ca10d9 | ||
|
|
a5913d98e1 | ||
|
|
5f3e3c2c62 | ||
|
|
c53e4c1d77 | ||
|
|
6d8be68071 | ||
|
|
fb28c99b8a | ||
|
|
acaed3deab | ||
|
|
bb47fdf25e | ||
|
|
97bb5b2b6d | ||
|
|
c0f0c67864 | ||
|
|
e91b0f0517 | ||
|
|
3f1f999e2d | ||
|
|
c63bc6bfaa | ||
|
|
a54907dce3 | ||
|
|
2c57c399bf | ||
|
|
a063580dbb | ||
|
|
a2c6e429b3 | ||
|
|
f3e07f105e | ||
|
|
f21700d876 | ||
|
|
34669aa651 | ||
|
|
08248f0859 | ||
|
|
722be83a14 | ||
|
|
ea1a6e814b | ||
|
|
2c930b19ba | ||
|
|
75e8eaad78 | ||
|
|
b74d6cfb98 | ||
|
|
a95d4ac1b5 | ||
|
|
b9c9d411ff | ||
|
|
05cc753275 | ||
|
|
af4a1c4e6b | ||
|
|
ef39098a1b | ||
|
|
6671b44434 | ||
|
|
b2dbde4b8c | ||
|
|
57cb36333b | ||
|
|
bfacc99ac3 | ||
|
|
e2192e119d | ||
|
|
4e0ac33eae | ||
|
|
8078e5bd54 | ||
|
|
146a0da7b3 | ||
|
|
ad7b83fc86 | ||
|
|
c668c49a15 | ||
|
|
3574346318 | ||
|
|
008be2848e | ||
|
|
63261593c8 | ||
|
|
18b14eb4a8 | ||
|
|
4724e503b0 | ||
|
|
2c4d93c7cf | ||
|
|
148c1c0984 | ||
|
|
6bc784b95a | ||
|
|
d275cce099 | ||
|
|
5136659a59 | ||
|
|
414816064f | ||
|
|
dcf96e43fa | ||
|
|
ea7d7bb644 | ||
|
|
60891cd197 | ||
|
|
0556fea593 | ||
|
|
74fcf6f28d | ||
|
|
70eb03ec29 | ||
|
|
856d26cb4b | ||
|
|
1adf386345 | ||
|
|
02137de419 | ||
|
|
73516df908 | ||
|
|
3025b9ebac | ||
|
|
e235f372ce | ||
|
|
62ace035c6 | ||
|
|
07a169d964 | ||
|
|
8e2b91c8cc | ||
|
|
831ff281d0 | ||
|
|
29ad485d17 | ||
|
|
51f740e23e | ||
|
|
c751f4a6ec | ||
|
|
742868dc2d | ||
|
|
9b8bddd179 | ||
|
|
1987203745 | ||
|
|
f7abcfb39a | ||
|
|
016bc8b813 | ||
|
|
66b1a59efe | ||
|
|
bd4750126b | ||
|
|
0fba6bd347 | ||
|
|
eb9db854d7 | ||
|
|
7d68d59cc2 | ||
|
|
f9311ba61d | ||
|
|
60d2888605 | ||
|
|
c2ada4c306 | ||
|
|
310ef194a1 | ||
|
|
daf30eff79 | ||
|
|
a90585f1d6 | ||
|
|
4be6d423e4 | ||
|
|
2db724bc50 | ||
|
|
452b9c26e4 | ||
|
|
d0c05b0143 | ||
|
|
36aeb4e9ee | ||
|
|
f8d4b66edd | ||
|
|
483de7d614 | ||
|
|
a95ed40bf0 | ||
|
|
686efcfcb1 | ||
|
|
bd6f2760a3 | ||
|
|
15631009b4 | ||
|
|
8eb822ebf3 | ||
|
|
aa95b1b763 | ||
|
|
92e3a5e386 | ||
|
|
4c22dcfbfd | ||
|
|
4f459198db | ||
|
|
056f7352ef | ||
|
|
0c2939b331 | ||
|
|
68e3d685fd | ||
|
|
0209d3f185 | ||
|
|
ef6890c31d | ||
|
|
1e98b3b559 | ||
|
|
223238d265 | ||
|
|
33f1f69e9c | ||
|
|
fb04f2723a | ||
|
|
78d4265f65 | ||
|
|
c2aed5345e | ||
|
|
2392894eb0 | ||
|
|
59fa2c0763 | ||
|
|
7081b2df85 | ||
|
|
1f34221552 | ||
|
|
c43681a068 | ||
|
|
992fab50ee | ||
|
|
15be89f89d | ||
|
|
d2902c8d3b | ||
|
|
8e51ec9ee4 | ||
|
|
7d82f203ee | ||
|
|
c07711de1d | ||
|
|
cb610d54b4 | ||
|
|
2f36da5201 | ||
|
|
954e3d2e71 | ||
|
|
830ae266c4 | ||
|
|
6eae751e70 | ||
|
|
f0e0c35f2b | ||
|
|
dc8253450d | ||
|
|
8d28d8cca0 | ||
|
|
274afc2c61 | ||
|
|
5717fe9ca8 | ||
|
|
b6b2c756c9 | ||
|
|
db57db52cf | ||
|
|
08fd4b69e8 | ||
|
|
24130c882d | ||
|
|
759f94e17a | ||
|
|
90c0525c7e | ||
|
|
5ac4918bdd | ||
|
|
3f9af9deb9 | ||
|
|
c6b0664f52 | ||
|
|
e36c0a418a | ||
|
|
efc8c61f75 | ||
|
|
44c690cd9a | ||
|
|
f84a88a824 | ||
|
|
c33ceddc26 | ||
|
|
6a750c7a50 | ||
|
|
f288c4fcef | ||
|
|
ee9e506af2 | ||
|
|
8a122a90fa | ||
|
|
45f141ce69 | ||
|
|
a9824dc6a3 | ||
|
|
84228eaeda | ||
|
|
c739407f92 | ||
|
|
578d495f91 | ||
|
|
bdd68116b7 | ||
|
|
c8508fabd0 | ||
|
|
36bc770ed4 | ||
|
|
5701e147ef | ||
|
|
5fc99f02cf | ||
|
|
411f540590 | ||
|
|
b2bd56a012 | ||
|
|
a3bf32fe87 | ||
|
|
9e93c984f7 | ||
|
|
d7ce9430ca | ||
|
|
0fb53623a5 | ||
|
|
9ad34243aa | ||
|
|
06f719e501 | ||
|
|
f439149cb3 | ||
|
|
32c0b283ef | ||
|
|
6e91297fa2 | ||
|
|
752ca15da4 | ||
|
|
e33cb8ae12 | ||
|
|
10bd7bab14 | ||
|
|
84f0ae00d2 | ||
|
|
e3f213305b | ||
|
|
d886cf40ef | ||
|
|
d572e3b1f9 | ||
|
|
816bd48c83 | ||
|
|
05563a7832 | ||
|
|
93e3044c6d | ||
|
|
6825e6c90a | ||
|
|
6401c5b4ee | ||
|
|
4471e5419d | ||
|
|
2b820c534d | ||
|
|
765993846d | ||
|
|
d9073bb033 | ||
|
|
efbff6a3d9 | ||
|
|
61abb4645c | ||
|
|
11d1b661db | ||
|
|
b95b766bc0 | ||
|
|
4094dc0c96 | ||
|
|
b7fffe8f7e | ||
|
|
a87e2bcdf1 | ||
|
|
6564241674 | ||
|
|
dc5b2a2ec0 | ||
|
|
924cc34647 | ||
|
|
507f96cdeb | ||
|
|
c07397695a |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -18,6 +18,7 @@ Makefile.in
|
||||
/aclocal.m4
|
||||
/autom4te.cache
|
||||
/compile
|
||||
/config.cache
|
||||
/config.guess
|
||||
/config.h
|
||||
/config.h.in
|
||||
@@ -45,4 +46,5 @@ Makefile.in
|
||||
/po/stamp-po
|
||||
|
||||
/shadow.spec
|
||||
/shadow-*.tar.*
|
||||
/libmisc/getdate.c
|
||||
|
||||
20
.travis.yml
Normal file
20
.travis.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
sudo: false
|
||||
|
||||
language: c
|
||||
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- autopoint
|
||||
- xsltproc
|
||||
|
||||
script:
|
||||
- ./autogen.sh --without-selinux --disable-man
|
||||
- grep ENABLE_ config.status
|
||||
- make
|
||||
|
||||
# vim:et:ts=2:sw=2
|
||||
105
ChangeLog
105
ChangeLog
@@ -1,3 +1,108 @@
|
||||
2018-04-29 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Release 4.6
|
||||
* Newgrp: avoid unnecessary lookups
|
||||
* Make language less binary
|
||||
* Add error when turning off man switch
|
||||
* Spelling fixes
|
||||
* Make userdel work with -R
|
||||
* newgidmap: enforce setgroups=deny if self-mapping a group
|
||||
* Norwegian bokmål translation
|
||||
* pwck: prevent crash by not passing O_CREAT
|
||||
* WITH_TCB fixes from Mandriva
|
||||
* Fix pwconv and grpconv entry skips
|
||||
* Fix -- slurping in su
|
||||
* add --prefix option
|
||||
|
||||
2017-07-16 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Import new Dutch translations.
|
||||
|
||||
2017-07-10 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Expand error codes for groupmod.
|
||||
|
||||
2017-05-17 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Release 4.5
|
||||
|
||||
2017-05-17 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Patch from Tobias Stoeckmann fixing regression in previous CVE fix
|
||||
preventing SIGTERM to su from being propagated to the job.
|
||||
* Patch from Chris Lamb making sp_lstchg shadow field reproducible.
|
||||
* Merge Russian translation updates from Yuri Kozlov
|
||||
* Fix missing close of subuid file on error
|
||||
|
||||
2017-02-23 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Merge patch by Tobias Stoeckmann <tobias@stoeckmann.org> to fix
|
||||
the equivalent of util-linux CVE-2017-2616.
|
||||
|
||||
2017-02-08 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Update Kazakh translations
|
||||
* Consult configuration before calculating subuids
|
||||
* Remove misplaced semicolon
|
||||
|
||||
2017-01-29 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Patch from Fedora to improve performance with SSSD, Winbind,
|
||||
or nss_ldap. (Tomas Mraz)
|
||||
* Make sure knowndef_table is NULL-terminated. (Bernhard Rosenkränzer)
|
||||
|
||||
2016-12-21 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Drop leading underscore from _COMMONIO_H and _SHADOWIO_H
|
||||
* Fix readability in usermod error messages.
|
||||
* Reset user in tallylog
|
||||
* Add audit support to su
|
||||
|
||||
2016-12-02 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* changes since 4.4
|
||||
- Use sizeof rather than hardcoding snprintf args
|
||||
- Fix useradd improper default loading
|
||||
- Update Vietnamese translations
|
||||
- Update Polish translations
|
||||
- Remove non-POSIX chmod option in Makefile
|
||||
- Fix suidubins assignments
|
||||
- Fix --add-subuids etc spelling in manpages
|
||||
- Audit homedir ownership change.
|
||||
- Print error on selinux file context update failure
|
||||
- Keep original file perms when creating a backup
|
||||
|
||||
* (henceforth we'll update Changelog with each commit
|
||||
and proper credit)
|
||||
|
||||
2016-12-02 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Changes since 4.2.1:
|
||||
- Documentation, error report and translations updates
|
||||
- Replace path_max with 32
|
||||
- User namespace support fixes/updates including:
|
||||
- Correct sanity checks in newXidmap
|
||||
- Fix building without subuid support
|
||||
- Add /etc/subuid support for UID matching
|
||||
- Support subuid for nonlocal users
|
||||
- Default to 65536 subuid allocations
|
||||
- Respect -r
|
||||
- Check for range overflows
|
||||
- Add tests from svn tree
|
||||
- Use AC_CHECK_SIZEOF for uid_t size checks
|
||||
- Accomodate missing /etc and login.defs
|
||||
- Support FORCE_SHADOW
|
||||
- Be more robust in hostile environment
|
||||
- Allow removing a primary group
|
||||
- Clear passwords on __pw_dup errors
|
||||
- Memory leak fix in commonio_update and get_map_ranges
|
||||
- Fix resource leak in syslog_sg
|
||||
- Fix user busy error at userdel
|
||||
- Support set/clear lastlog record via lastlog command
|
||||
- Add --no-create-home as longopt for -M
|
||||
- Fix signal races
|
||||
- Reduce syslog priority of common usage events
|
||||
|
||||
2013-08-25 Nicolas François <nicolas.francois@centraliens.net>
|
||||
|
||||
* src/vipw.c: After waitpid(), use errno only if waitpid returned
|
||||
|
||||
@@ -2,7 +2,5 @@
|
||||
|
||||
EXTRA_DIST = NEWS README TODO shadow.spec.in
|
||||
|
||||
AUTOMAKE_OPTIONS = 1.5 dist-bzip2 foreign
|
||||
|
||||
SUBDIRS = po man libmisc lib src \
|
||||
contrib doc etc
|
||||
|
||||
142
NEWS
142
NEWS
@@ -654,9 +654,9 @@ shadow-4.0.18.2 -> shadow-4.1.0 09-12-2007
|
||||
- Use MD5_CRYPT_ENAB, ENCRYPT_METHOD, SHA_CRYPT_MIN_ROUNDS, and
|
||||
SHA_CRYPT_MAX_ROUNDS to define the default encryption algorithm for the
|
||||
passwords.
|
||||
- chpaswd, chgpasswd, newusers: New options -c/--crypt-method and
|
||||
- chpasswd, chgpasswd, newusers: New options -c/--crypt-method and
|
||||
-s/--sha-rounds to supersede the system default encryption algorithm.
|
||||
- chpaswd, chgpasswd, newusers: DES is no more the default algorithm. They
|
||||
- chpasswd, chgpasswd, newusers: DES is no more the default algorithm. They
|
||||
will respect the system default configured in /etc/login.defs
|
||||
|
||||
*** documentation:
|
||||
@@ -701,14 +701,14 @@ shadow-4.0.17 -> shadow-4.0.18 01-08-2006
|
||||
- groupadd, groupmod, useradd, usermod: fixed UID/GID overflow (fixed
|
||||
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=198920)
|
||||
- passwd, useradd, usermod: fixed inactive/mindays/warndays/maxdays overflow
|
||||
(simillar to RH#198920),
|
||||
- groupmems: rewrited for use PAM and getopt_long() and now it is enabled
|
||||
(similar to RH#198920),
|
||||
- groupmems: rewritten for use PAM and getopt_long() and now it is enabled
|
||||
for build and install (patch by George Kraft <gk4@swbell.net>),
|
||||
- S/Key: removed assign getpass() to libshadow_getpass() on autoconf level
|
||||
(patch by Ulrich Mueller <ulm@kph.uni-mainz.de>; http://bugs.gentoo.org/139966),
|
||||
- usermod: back to previous -a option semantics and clarify -a behavior
|
||||
on documentation level (by Greg Schafer <gschafer@zip.com.au>),
|
||||
- chsh, groupmod: rewrited for use getopt_long().
|
||||
- chsh, groupmod: rewritten for use getopt_long().
|
||||
- updated translations: ca, cs, da, eu, fr, gl, hu, ko, pl, pt, ru, sv, tr, uk, vi.
|
||||
*** documentation:
|
||||
- fr and ru man pages are up to date,
|
||||
@@ -743,7 +743,7 @@ shadow-4.0.15 -> shadow-4.0.16 05-06-2006
|
||||
|
||||
*** general:
|
||||
- userdel: better fix for old CERT VU#312962 (which was fixed in shadow 4.0.8):
|
||||
fixed forgoten checking of the return value from fchown() before
|
||||
fixed forgotten checking of the return value from fchown() before
|
||||
proceeding with the fchmod() (based on Owl patch prepared by
|
||||
Rafal Wojtczuk <nergal@owl.openwall.com>),
|
||||
- userdel: use login.defs::MAIL_DIR instead hardcoded /var/mail in created
|
||||
@@ -755,7 +755,7 @@ shadow-4.0.15 -> shadow-4.0.16 05-06-2006
|
||||
passwords and libshadow_getpass() is used only because libc getpass()
|
||||
do not handles password prompting with echo enabled,
|
||||
- move login.defs::MD5_CRYPT_ENAB to non-PAM part,
|
||||
- userdel: rewrited for use getopt_log(),
|
||||
- userdel: rewritten for use getopt_log(),
|
||||
- install default/template configuration files:
|
||||
-- if shadow is configured with use PAM install /etc/pam.d/* files,
|
||||
-- if shadow do not uses PAM install /etc/{limits,login.acces} files,
|
||||
@@ -793,7 +793,7 @@ shadow-4.0.15 -> shadow-4.0.16 05-06-2006
|
||||
- updated ru login.defs(5), passwd(1), userdel(8), usermod(8) man pages,
|
||||
- pw_auth(3) man page removed (outdated),
|
||||
- install limits(5), login.access(5) and porttime(5) man pages only when
|
||||
shadow is builded with PAM support disabled,
|
||||
shadow is built with PAM support disabled,
|
||||
- passwd(1): better document how password strength is checked
|
||||
(fixed http://bugs.debian.org/115380),
|
||||
- usermod(8): added missing -a option description
|
||||
@@ -816,7 +816,7 @@ shadow-4.0.14 -> shadow-4.0.15 13-03-2006
|
||||
- login: default UMASK if not specified in login.defs is 022 (pointed by
|
||||
Peter Vrabec <pvrabec@redhat.com>),
|
||||
- chgpasswd: new tool (by Jonas Meurer <mejo@debian.org>),
|
||||
- lastlog: print the usage and exit if an additional argument is profided to
|
||||
- lastlog: print the usage and exit if an additional argument is provided to
|
||||
lastlog (merge 488_laslog_verify_arguments Debian patch),
|
||||
- login, newgrp, nologin, su: do not link with libselinux (merge
|
||||
490_link_selinux_only_when_needed Debian patch),
|
||||
@@ -830,9 +830,9 @@ shadow-4.0.14 -> shadow-4.0.15 13-03-2006
|
||||
tries exceeded,
|
||||
- always prints the number of tries in the syslog entry.
|
||||
- add special handling for PAM_ABORT
|
||||
- add an entry to failog, as when USE_PAM is not defined. (#53164)
|
||||
- add an entry to faillog, as when USE_PAM is not defined. (#53164)
|
||||
- changed pam_end to PAM_END. This is certainly was a mistake. PAM_END is
|
||||
pam_close_seesion + pam_end. Here, the session is still not open, we
|
||||
pam_close_session + pam_end. Here, the session is still not open, we
|
||||
don't have to close it.
|
||||
- a HAVE_PAM_FAIL_DELAY is missing,
|
||||
- su: fixed pam session support (patch from Topi Miettinen; fixed #57526,
|
||||
@@ -840,7 +840,7 @@ shadow-4.0.14 -> shadow-4.0.15 13-03-2006
|
||||
- userdel: user's group is already removed by update_groups().
|
||||
remove_group() is not needed (bug introduced in 4.0.14 on merge FC fixes).
|
||||
Fixed by Nicolas François <nicolas.francois@centraliens.net>,
|
||||
- useradd: allways remove group and gshadow databases lock, Fixed by Nicolas
|
||||
- useradd: always remove group and gshadow databases lock, Fixed by Nicolas
|
||||
François <nicolas.francois@centraliens.net>
|
||||
(http://bugs.debian.org/348250)
|
||||
- auditing fixes:
|
||||
@@ -848,14 +848,14 @@ shadow-4.0.14 -> shadow-4.0.15 13-03-2006
|
||||
added audit_logger() prototype),
|
||||
- useradd: fixed excess audit_logger() argument,
|
||||
- chage: added missing \n on display password status if password must be
|
||||
chaged,
|
||||
changed,
|
||||
- useradd: fixed allow non-unique UID (http://bugs.debian.org/351281),
|
||||
- variouse code cleanups for make possible compilation of shadow with -Wall
|
||||
- various code cleanups for make possible compilation of shadow with -Wall
|
||||
-Werror (by Alexander Gattin <xrgtn@yandex.ru>),
|
||||
- su: move exit() outside libmisc/shell.c::shell() for handle shell() errors
|
||||
on higher level (now is better visable where some programs exit with 126
|
||||
and 127 exit codes); added new shell() parameter (char *const envp[])
|
||||
which allow fix preserving enviloment in su on using -p, (patch by
|
||||
which allow fix preserving enviroment in su on using -p, (patch by
|
||||
Alexander Gattin <xrgtn@yandex.ru>),
|
||||
- su: added handle -c,--command option for GNU su compliance (merge
|
||||
437_su_-c_option Debian patch),
|
||||
@@ -903,7 +903,7 @@ shadow-4.0.13 -> shadow-4.0.14 03-01-2006
|
||||
- userdel: make the -f option force the removal of the user's group (even if it
|
||||
is the primary group of another user)
|
||||
(merge 453_userdel_-f_removes_group Debian patch),
|
||||
- usermod: rewrited for use getopt_long() (Christian Perrier <bubulle@kheops.frmug.org>),
|
||||
- usermod: rewritten for use getopt_long() (Christian Perrier <bubulle@kheops.frmug.org>),
|
||||
- grpck: fixed segmentation fault on using -s when /etc/gshadow is empty (fix by
|
||||
Tomasz Lemiech <szpajder@staszic.waw.pl>),
|
||||
- passwd: remove handle -f, -g and -s options.
|
||||
@@ -912,7 +912,7 @@ shadow-4.0.13 -> shadow-4.0.14 03-01-2006
|
||||
Nicolas François <nicolas.francois@centraliens.net>)
|
||||
- su: export $USER and $SHELL as well as $HOME (http://bugs.debian.org/11003 and
|
||||
http://bugs.debian.org/11189),
|
||||
- su, vipw: rewrited for use getopt_long(),
|
||||
- su, vipw: rewritten for use getopt_long(),
|
||||
- su: log successful/failed through syslog (http://bugs.debian.org/190215),
|
||||
- updated translations: ca, cs, da, eu, fi, fr, it, pl, pt, ru, sv, tl, vi,
|
||||
- new translations: gl.
|
||||
@@ -946,7 +946,7 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005
|
||||
|
||||
*** general:
|
||||
- chage: removed duplicated pam_start(),
|
||||
- chfn, chsh: finished PAM support usin pam_start() and co.,
|
||||
- chfn, chsh: finished PAM support using pam_start() and co.,
|
||||
- userdel: userdel should not remove the group which is primary for someone else
|
||||
(fix by Nicolas François <nicolas.francois@centraliens.net>
|
||||
http://bugs.debian.org/295416),
|
||||
@@ -955,7 +955,7 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005
|
||||
- fixedlib/commonio.c: don't assume selinux is enabled if is_selinux_enabled()
|
||||
returns -1 (merge isSelinuxEnabled FC patch by Jeremy Katz <katzj@redhat.com>),
|
||||
- login, su (non-PAM case): fixed setup max address space limits (added missing break
|
||||
statement in case) spoted by Lasse Collin <lasse.collin@tukaani.org>,
|
||||
statement in case) spotted by Lasse Collin <lasse.collin@tukaani.org>,
|
||||
- auditing support added. Patch prepared by Peter Vrabec <pvrabec@redhat.com> basing
|
||||
on work by Steve Grubb from http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=159215
|
||||
Now auditing support have commands: chage, gpasswd, groupadd, groupdel, groupmod,
|
||||
@@ -972,12 +972,12 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005
|
||||
This will permit to adduser Debian script to detect if chage failed because the
|
||||
system doesn't have shadowed passwords (fix for http://bugs.debian.org/317012),
|
||||
- merge 010_more-i18ned-messages Debian patch which adds i18n support for few
|
||||
more messages (orginaly patch was prepared by Guillem Jover <guillem@debian.org>),
|
||||
more messages (originally patch was prepared by Guillem Jover <guillem@debian.org>),
|
||||
- lastlog: added handle -b option which allow print only lastlog records older than
|
||||
specified DAYS (fix by <miles@lubin.us>),
|
||||
- chpasswd, gpasswd, newusers: fixed libmisc/salt.c for use login.defs::MD5_CRYPT_ENAB
|
||||
only if PAM support is disabled (fix by John Gatewood Ham <zappaman@buraphalinux.org>),
|
||||
- passwd: rewrited for use getopt_long(),
|
||||
- passwd: rewritten for use getopt_long(),
|
||||
- newgrp: when newgrp process sits between parent and child shells, it should
|
||||
propagate STOPs from child to parent and CONTs from parent to child,
|
||||
otherwise e.g. bash's "suspend" command won't work
|
||||
@@ -987,11 +987,11 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005
|
||||
- chsh(1), groupadd(8), newusers(8), pwconv(8), useradd(8), userdel(8), usermod(8):
|
||||
added missing references to /etc/login.defs and login.defs(5)
|
||||
(Christian Perrier <bubulle@kheops.frmug.org>),
|
||||
- passwd(5): rewrited based on work by Greg Wooledge <greg@wooledge.org>
|
||||
- passwd(5): rewritten based on work by Greg Wooledge <greg@wooledge.org>
|
||||
http://bugs.debian.org/328113
|
||||
- login(1): added securetty(5) to SEE ALSO section
|
||||
(fixed Debian bug http://bugs.debian.org/325773),
|
||||
- groupadd(8), useradd(8): fix regular expression describing alloved login/group
|
||||
- groupadd(8), useradd(8): fix regular expression describing allowed login/group
|
||||
names (pointed by Nicolas François <nicolas.francois@centraliens.net>)
|
||||
(correct is [a-z_][a-z0-9_-]*[$]),
|
||||
- groupadd(8), useradd(8): documents in CAVEATS section the limitations shadow
|
||||
@@ -1001,9 +1001,9 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005
|
||||
shadow-4.0.11.1 -> shadow-4.0.12 22-08-2005
|
||||
|
||||
*** general:
|
||||
- newgrp, login: remove using login.defs::CLOSE_SESSIONS variable and allways
|
||||
- newgrp, login: remove using login.defs::CLOSE_SESSIONS variable and always
|
||||
close PAM session,
|
||||
- fixed configure.in: realy enable shadow group support by default (pointed by
|
||||
- fixed configure.in: really enable shadow group support by default (pointed by
|
||||
Greg Schafer <gschafer@zip.com.au> and Peter Vrabec <pvrabec@redhat.com>),
|
||||
- login.defs: removed handle QMAIL_DIR variable,
|
||||
- login: allow regular user to login on read-only root file system (not only for root)
|
||||
@@ -1028,9 +1028,9 @@ shadow-4.0.11.1 -> shadow-4.0.12 22-08-2005
|
||||
period and permit brute-force attacks (fixed http://bugs.debian.org/288827),
|
||||
- uClibc fixes (by Martin Schlemmer <azarah@nosferatu.za.org>):
|
||||
added require ngettext (added [need-ngettext] to AM_GNU_GETTEXT() parameters)
|
||||
and stub prototype for ngettext() in lib/prototypes.h (neccessary if shadow
|
||||
and stub prototype for ngettext() in lib/prototypes.h (necessary if shadow
|
||||
compiled with disabled NLS support)
|
||||
- groupadd: rewrited for use getopt_long(),
|
||||
- groupadd: rewritten for use getopt_long(),
|
||||
- groupadd, groupdel, groupmod, userdel: do OPENLOG() before pam_start(),
|
||||
- groupadd: fixed double OPENLOG(),
|
||||
- removed lib/{grpack,gspack,pwpack,sppack}.c and prototypes from lib/prototypes.h
|
||||
@@ -1066,7 +1066,7 @@ shadow-4.0.10 -> shadow-4.0.11 18-07-2005
|
||||
- su: ignore SIGINT while authenticating. A ^C could defeat the waiting period and
|
||||
permit brute-force attacks. Also ignore SIGQUIT.
|
||||
Fixed: http://bugs.debian.org/52372 and http://bugs.debian.org/288827
|
||||
- useradd: rewrited for use getopt_long(),
|
||||
- useradd: rewritten for use getopt_long(),
|
||||
- newgrp: add fix for handle splitted NIS groups: extends the functionality that,
|
||||
if the requested group is given, all groups of the same GID are tested for
|
||||
membership of the requesting user.
|
||||
@@ -1097,7 +1097,7 @@ shadow-4.0.10 -> shadow-4.0.11 18-07-2005
|
||||
- updated translations: cs, da, de, es, fi, pl, pt, ro, ru, sk.
|
||||
*** documentation:
|
||||
- pwck(8): document -q option (based on Debian patch for fix http://bugs.debian.org/309408)
|
||||
- pwck(8): rewrited OPTIONS section and better SYNOPSIS,
|
||||
- pwck(8): rewritten OPTIONS section and better SYNOPSIS,
|
||||
- lastlog(8): document that lastlog is a sparse file, and don't need to be rotated
|
||||
http://bugs.debian.org/219321
|
||||
- login(8): better explain the respective roles of login, init and getty with regards
|
||||
@@ -1111,12 +1111,12 @@ shadow-4.0.9 -> shadow-4.0.10 28-06-2005
|
||||
|
||||
*** general:
|
||||
- mkpasswd: removed,
|
||||
- userdel: now deletes user groups from /etc/gshdow as well as /etc/group.
|
||||
- userdel: now deletes user groups from /etc/gshadow as well as /etc/group.
|
||||
Fix by Nicolas François <nicolas.francois@centraliens.net>.
|
||||
http://bugs.debian.org/99442
|
||||
- usermod: when relocating a user's home directory, don't fail and remove the new
|
||||
home directory if we can't remove the old home directory for some
|
||||
reason; the results can be spectularly poort if, for instance, only
|
||||
reason; the results can be spectacularly poor if, for instance, only
|
||||
the rmdir() fails. Patch prepared by Timo Lindfors <lindi-spamtrap@newmail.com>.
|
||||
http://bugs.debian.org/166369
|
||||
- su: fix syslogs to be less ambiguous. Use old:new format instead of old-new
|
||||
@@ -1124,7 +1124,7 @@ shadow-4.0.9 -> shadow-4.0.10 28-06-2005
|
||||
http://bugs.debian.org/213592
|
||||
- removed not used now libmisc/setup.c,
|
||||
- login: use also UTMPX API instead UTMP on failure (login was affected for this
|
||||
when shadow was builded without PAM support)
|
||||
when shadow was built without PAM support)
|
||||
patch by Nicolas François <nicolas.francois@centraliens.net>
|
||||
- login: the PAM session needs to be closed as root, thus before change_uid()
|
||||
http://bugs.debian.org/53570 http://bugs.debian.org/195048 http://bugs.debian.org/211884
|
||||
@@ -1135,12 +1135,12 @@ shadow-4.0.9 -> shadow-4.0.10 28-06-2005
|
||||
http://bugs.debian.org/48002
|
||||
- login: fixed username on succesful login (was using the normal username,
|
||||
when it should have used pam_user) http://bugs.debian.org/47819
|
||||
- remove using SHADOWPWD #define so now shadow is allways builded with shadow
|
||||
passwowd support,
|
||||
- chage: rewrited for use getopt_long(),
|
||||
- remove using SHADOWPWD #define so now shadow is always built with shadow
|
||||
password support,
|
||||
- chage: rewritten for use getopt_long(),
|
||||
- updated translations: ca, cs, da, fi, pl, ru, zh_TW.
|
||||
*** documentation:
|
||||
- most of the man pages now are generated from XML files so in case submiting any
|
||||
- most of the man pages now are generated from XML files so in case submitting any
|
||||
chages to this resources please make diff to XML files,
|
||||
- chfn: give more details about the influence of login.defs on what's allowed to
|
||||
users.
|
||||
@@ -1148,7 +1148,7 @@ shadow-4.0.9 -> shadow-4.0.10 28-06-2005
|
||||
shadow-4.0.8 -> shadow-4.0.9 23-05-2005
|
||||
|
||||
*** general:
|
||||
- passwd: fixed segfault in non-PAM connfiguration
|
||||
- passwd: fixed segfault in non-PAM configuration
|
||||
(submited by Greg Schafer <gschafer@zip.com.au>),
|
||||
- newgrp: fixed NULL pointer dereference - getlogin() and ttyname() can
|
||||
return NULL which is not checked (http://bugs.debian.org/162303),
|
||||
@@ -1170,15 +1170,15 @@ shadow-4.0.7 -> shadow-4.0.8 26-04-2005
|
||||
- configure.in: add using AC_GNU_SOURCE macro for kill compilation warnings about
|
||||
implicit declaration of function `fseeko',
|
||||
- faillog: changed faillog record display format for allow fit in 80 columns all
|
||||
faillog atributies,
|
||||
faillog attributes,
|
||||
- removed NDBM code (unused),
|
||||
- fixed use of SU_WHEEL_ONLY in su. Now su realy is avalaible for wheel group
|
||||
- fixed use of SU_WHEEL_ONLY in su. Now su really is available for wheel group
|
||||
members. Thanks to Mike Frysinger <vapier@gentoo.org> for report:
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=80345
|
||||
- drop never finished kerberos and des_rpc support (for kerberos support back firs
|
||||
must be prepared modularization),
|
||||
- fixed UTMP path detection (by Kelledin <kelledin@users.sf.net>),
|
||||
- useradd: rewrited group count to dynamic (by John Newbigin
|
||||
- useradd: rewritten group count to dynamic (by John Newbigin
|
||||
<jnewbigin@ict.swin.edu.au>),
|
||||
- login: fixed create lastlog entry fo users never loged in on non-PAM
|
||||
variant of login (fix by <oracular@ziplip.com>),
|
||||
@@ -1193,7 +1193,7 @@ shadow-4.0.7 -> shadow-4.0.8 26-04-2005
|
||||
fchmod() is executed. (Actually, we could also pass the final "mode" to
|
||||
the open() call and then save the consequent fchmod().)
|
||||
- SELinux changes: added changes in chage, chfn, chsh, passwd for allow
|
||||
construct more grained user password/accuunt properties on SELinux
|
||||
construct more grained user password/account properties on SELinux
|
||||
policies level. Patch originally based on RH changes (submited by Chris
|
||||
PeBenito <pebenito@gentoo.org>),
|
||||
- added SELinux changes: in libmisc/copydir.c (based on Fedora patch),
|
||||
@@ -1211,7 +1211,7 @@ shadow-4.0.7 -> shadow-4.0.8 26-04-2005
|
||||
- newgrp(1): fix #251926, #166173, #113191 Debian bugs: explain why editing /etc/group
|
||||
(without gshadow) doesn't permit to use newgrp,
|
||||
- newgrp(1): newgrp uses /bin/sh (not bash),
|
||||
- faillog(8): updated after rewrited faillog command for use getopt_long(),
|
||||
- faillog(8): updated after rewritten faillog command for use getopt_long(),
|
||||
- login(1): removed fragment about abilities pass enviroment variables in login prompt,
|
||||
- gshadow(5): new file (by Nicolas Nicolas François <nicolas.francois@centraliens.net>),
|
||||
- usermod(8): fixed #302388 Debian bug: added separated -o option description,
|
||||
@@ -1229,24 +1229,24 @@ shadow-4.0.6 -> shadow-4.0.7 26-01-2005
|
||||
-- use fseeko() instead fseek() and remove casting file offsets to unsigned
|
||||
long.
|
||||
- lastlog:
|
||||
-- rewrited source code using the same style as in chpasswd.c,
|
||||
-- open lastlog file after finish parse comman line optiomns
|
||||
(now --help otput can be displayd for users without lastlog
|
||||
-- rewritten source code using the same style as in chpasswd.c,
|
||||
-- open lastlog file after finish parse commandline options
|
||||
(now --help output can be displayed for users without lastlog
|
||||
file read permission),
|
||||
-- cleanups in lastlog(8) man page using the same style as in
|
||||
chpasswd(8).
|
||||
- chpasswd:
|
||||
-- switch chpasswd to use getopt_long() and adds a --md5 option
|
||||
(by Ian Gulliver <ian@penguinhosting.net>),
|
||||
-- rewrited chpasswd(8) man page.
|
||||
-- rewritten chpasswd(8) man page.
|
||||
|
||||
shadow-4.0.5 -> shadow-4.0.6 08-11-2004
|
||||
|
||||
- su: fixed adding of pam_env env variables to enviroment
|
||||
(Martin Schlemmer <azarah@nosferatu.za.org>),
|
||||
- autoconf: fixed filling MAIL_SPOOL_DIR and MAIL_SPOOL_FILE variables
|
||||
which was allways empty (Gregorio Guidi <g.guidi@sns.it>),
|
||||
- realuy closse security bug in libmisc/pwdcheck.c,
|
||||
which was always empty (Gregorio Guidi <g.guidi@sns.it>),
|
||||
- really close security bug in libmisc/pwdcheck.c,
|
||||
- added missing template/example PAM service config files for chfn, chsh and
|
||||
userdel,
|
||||
- do not translate variable names from /etc/default/useradd during
|
||||
@@ -1257,10 +1257,10 @@ shadow-4.0.4.1 -> shadow-4.0.5 27-10-2004
|
||||
- change libmisc to private static library,
|
||||
- added SELinux support (basing on patch from Gentoo),
|
||||
- chage: more verbose/human readable -l output. This output is much more
|
||||
beter for send directly via email for each users as message with account
|
||||
better for send directly via email for each users as message with account
|
||||
status (for example as message with warning about account/password expiration),
|
||||
- login: fixed handle -f option: now it works correctly without specify "-h
|
||||
<host>" if open login session localy is required (thanks for help
|
||||
<host>" if open login session locally is required (thanks for help
|
||||
investigate bug for Krzysztof Kotlenga),
|
||||
- userdel: when removing a user with userdel, userdel was always exits with 1 (fixed).
|
||||
Based on http://bugs.gentoo.org/show_bug.cgi?id=66687,
|
||||
@@ -1274,7 +1274,7 @@ shadow-4.0.4.1 -> shadow-4.0.5 27-10-2004
|
||||
makes httpd Option SymlinkIfOwnerMatch break for default weg pages
|
||||
including symlinks placed into /etc/skel/public_html for example.
|
||||
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=66819
|
||||
- su: add pam_open_session() support. If builded without PAM support
|
||||
- su: add pam_open_session() support. If built without PAM support
|
||||
propagate $DISPLAY and $XAUTHORITY enviroment variables.
|
||||
Based on http://www.gentoo.org/cgi-bin/viewcvs.cgi/sys-apps/shadow/files/shadow-4.0.4.1-su-pam_open_session.patch?rev=1.1
|
||||
- applied 036_pam_access_with_preauth.patch Debian patch submited by Bjorn
|
||||
@@ -1287,11 +1287,11 @@ shadow-4.0.4.1 -> shadow-4.0.5 27-10-2004
|
||||
Use constant strings rather than argv[0] for syslog ident in the user
|
||||
management commands,
|
||||
shadow-4.0.4.1-owl-tmp.diff:
|
||||
Remove using mktemp() if mkstemp() prototype not found (use allways mkstemp()),
|
||||
Remove using mktemp() if mkstemp() prototype not found (use always mkstemp()),
|
||||
shadow-4.0.4.1-owl-check-reads.diff:
|
||||
Add checking for read errors in commonio and vipw/vigr (not doing so could
|
||||
result in data loss when the records are written back),
|
||||
- fixed securirty bug in libmisc/pwdcheck.c which allow unauthorized
|
||||
- fixed security bug in libmisc/pwdcheck.c which allow unauthorized
|
||||
account properties modification.
|
||||
Affected tools: chfn and chsh.
|
||||
Bug was discovered by Martin Schulze <joey@infodrom.org>.
|
||||
@@ -1307,12 +1307,12 @@ shadow-4.0.4.1 -> shadow-4.0.5 27-10-2004
|
||||
|
||||
shadow-4.0.4 => shadow-4.0.4.1 14-01-2004
|
||||
- bug fixes in automake files for generate correct tar ball on "make dist":
|
||||
added mising "EXTRA_DIST = $(man_MANS)" in man/*/Makefile.am.
|
||||
added missing "EXTRA_DIST = $(man_MANS)" in man/*/Makefile.am.
|
||||
|
||||
shadow-4.0.3 => shadow-4.0.4 14-01-2004
|
||||
|
||||
*** general:
|
||||
- added missing information about -f options in groupadd usage mesage
|
||||
- added missing information about -f options in groupadd usage message
|
||||
(document this also in man page),
|
||||
- removed TCFS support (tcfs is dead),
|
||||
- convert all po/*.po files to utf-8,
|
||||
@@ -1320,7 +1320,7 @@ shadow-4.0.3 => shadow-4.0.4 14-01-2004
|
||||
per service flushing method instead HUPing nscd process),
|
||||
- removed old AUTH_METHODS dependent code,
|
||||
- chage: now all code depend on SHADOWPWD. If shadow will not be configured
|
||||
on autoconf level for using shadow possword chage is olny stub which
|
||||
on autoconf level for using shadow password chage is olny stub which
|
||||
informs "chage not configured for shadow password support."
|
||||
- dpasswd: removed,
|
||||
- login: remove handle login.defs::DIALUPS_CHECK_ENAB code,
|
||||
@@ -1328,7 +1328,7 @@ shadow-4.0.3 => shadow-4.0.4 14-01-2004
|
||||
- ALL tools, libraries: remove old SVR4, SVR4_SI86_EUA BSD_QUOTA and ATT_AGE
|
||||
dependent code,
|
||||
- ALL: ready for gettext 0.11.5, automake 1.7.4, autoconf 2.57,
|
||||
- logoutd, userd: handle also utmpx if avalaile,
|
||||
- logoutd, userd: handle also utmpx if available,
|
||||
- newgrp: fix for non-PAM version
|
||||
Use CLOSE_SESSIONS depending code only when USE_PAM.
|
||||
The problem was reported by Mattias Webjorn Eriksson using Slackware
|
||||
@@ -1356,7 +1356,7 @@ shadow-4.0.3 => shadow-4.0.4 14-01-2004
|
||||
|
||||
shadow-4.0.2 => shadow-4.0.3 13-03-2002
|
||||
|
||||
- added variouse cs, de, fr, id, it, ko man pages found mainly in national
|
||||
- added various cs, de, fr, id, it, ko man pages found mainly in national
|
||||
man pages translations projects (this documents are not synced with
|
||||
current en version but you know .. "Documentations is lik sex. When it is
|
||||
good it very very good. Whet it is bad it is better than nothing."). Any
|
||||
@@ -1372,9 +1372,9 @@ shadow-4.0.2 => shadow-4.0.3 13-03-2002
|
||||
shadow-4.0.1 => shadow-4.0.2 17-02-2002
|
||||
|
||||
- resolve many fuzzy translations also all this which may cause problems on
|
||||
displaing long uid/gid,
|
||||
- allow use "$" on ending in cereated by useradd usermname accounts for allow
|
||||
create machine acounts for samba (thanks to Jerome Borsboom
|
||||
displaying long uid/gid,
|
||||
- allow use "$" on ending in created by useradd username accounts for allow
|
||||
create machine accounts for samba (thanks to Jerome Borsboom
|
||||
<borsboom@tch.fgg.eur.nl> for point this problem in 4.0.1),
|
||||
- fix small but ugly bug in configure.in in libpam_mics library detection.
|
||||
|
||||
@@ -1394,7 +1394,7 @@ shadow-4.0.0 => shadow-4.0.1
|
||||
as root. If root does read-only, there's no lock needed. Added missing
|
||||
"#include <errno.h>" for above (me).
|
||||
shadow-4.0.0-owl-warnings.diff
|
||||
Olny one fix from this patch was aplayd because other was fixed few days
|
||||
Olny one fix from this patch was applied because other was fixed few days
|
||||
before :)
|
||||
shadow-4.0.0-owl-check_names.diff
|
||||
Merge only prat this patch with checking login name matching; checking
|
||||
@@ -1402,7 +1402,7 @@ shadow-4.0.0 => shadow-4.0.1
|
||||
probably _POSIX_LOGIN_NAME_MAX from <bits/posix1_lim.h>,
|
||||
shadow-4.0.0-owl-chage-drop-priv.diff
|
||||
shadow-4.0.0-owl-pam-auth.diff
|
||||
Merge part with reorder initialize PAM and checkin is chage is runed by
|
||||
Merge part with reorder initialize PAM and checking if chage is runed by
|
||||
root or not - now chage can be runed from non-root account for checking
|
||||
by user own account information (if PAM enabled).
|
||||
- fixes for handle/print correctly 32bit uid/gid (Thorsten Kukuk <kukuk@suse.de>),
|
||||
@@ -1446,30 +1446,30 @@ shadow-20001016 => shadow-4.0.0 06-01-2002
|
||||
- much better automake support,
|
||||
- added pt_BR man pages for gpasswd(1), groupadd(8), groupdel(8),
|
||||
groupmod(8), shadow(5) (man pages for other nations also are welcome),
|
||||
- mamny small fixes and updates nad improvements in man pages,
|
||||
- aplayed Debian patch to man pages for shadowconfig,
|
||||
- many small fixes and updates nad improvements in man pages,
|
||||
- applied Debian patch to man pages for shadowconfig,
|
||||
- remove limit to 6 chars logged tty name (012_libmisc_sulog.c.diff Debian
|
||||
patch).
|
||||
|
||||
shadow-20001012 -> shadow-20001016:
|
||||
- conditionaly disabled body reload_nscd() because not every
|
||||
- conditionally disabled body reload_nscd() because not every
|
||||
version of nscd can handle it (this can be enabled by define
|
||||
ENABLE_NSCD_SIGHUP) (Marek Michałkiewicz <marekm@linux.org.pl>)
|
||||
- fixes on autoconf/automake level for dist target,
|
||||
- Julianne F. Haugh new contact adress.
|
||||
- Julianne F. Haugh new contact address.
|
||||
|
||||
shadow-20000902 => shadow-20001012
|
||||
|
||||
- removed /redhat directory with obsoleted files (partialy rewrited spec
|
||||
- removed /redhat directory with obsoleted files (partially rewritten spec
|
||||
file is now in root directory),
|
||||
- aplayed shadow-19990827-group.patch patch from RH wich prevents adduser
|
||||
- applied shadow-19990827-group.patch patch from RH wich prevents adduser
|
||||
overwrite previously existing groups in adduser,
|
||||
- added PAM support for chage (bind to "chage" PAM config file) also
|
||||
added PAM support for all other small tools like chpasswd, groupadd,
|
||||
groupdel, groupmod, newusers, useradd, userdel, usermod (bind to common
|
||||
"shadow" PAM config file) - this modificaytions mainly based on
|
||||
"shadow" PAM config file) - this modifications mainly based on
|
||||
modifications prepared by Janek Rękojarski <baggins@pld.org.pl>,
|
||||
- many small fixes and improvments in automake (mow "make dist"
|
||||
- many small fixes and improvements in automake (mow "make dist"
|
||||
works correctly),
|
||||
- added cs translation (Jiri Pavlovsky <Jiri.Pavlovsky@ff.cuni.cz>).
|
||||
|
||||
|
||||
4
README
4
README
@@ -44,6 +44,7 @@ a lot of mail...
|
||||
|
||||
Adam Rudnicki <adam@v-lo.krakow.pl>
|
||||
Alan Curry <pacman@tardis.mars.net>
|
||||
Aleksa Sarai <cyphar@cyphar.com>
|
||||
Alexander O. Yuriev <alex@bach.cis.temple.edu>
|
||||
Algis Rudys <arudys@rice.edu>
|
||||
Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
@@ -117,5 +118,6 @@ Maintainers
|
||||
===========
|
||||
|
||||
Tomasz Kłoczko <kloczek@pld.org.pl> (2000-2007)
|
||||
Nicolas François <nicolas.francois@centraliens.net> (2007-now)
|
||||
Nicolas François <nicolas.francois@centraliens.net> (2007-2014)
|
||||
Serge E. Hallyn <serge@hallyn.com> (2014-now)
|
||||
|
||||
|
||||
10
configure.ac
10
configure.ac
@@ -1,6 +1,9 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT
|
||||
AM_INIT_AUTOMAKE(shadow, 4.4)
|
||||
AC_PREREQ([2.64])
|
||||
AC_INIT([shadow], [4.6], [pkg-shadow-devel@lists.alioth.debian.org], [],
|
||||
[https://github.com/shadow-maint/shadow])
|
||||
AM_INIT_AUTOMAKE([1.11 foreign dist-xz])
|
||||
AM_SILENT_RULES([yes])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
dnl Some hacks...
|
||||
@@ -321,6 +324,7 @@ if test "$enable_man" = "yes"; then
|
||||
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||
if test -z "$XSLTPROC"; then
|
||||
enable_man=no
|
||||
AC_MSG_ERROR([xsltproc is missing.])
|
||||
fi
|
||||
|
||||
dnl check for DocBook DTD and stylesheets in the local catalog.
|
||||
@@ -563,7 +567,7 @@ if test "$with_libpam" = "yes"; then
|
||||
LIBS=$save_libs
|
||||
|
||||
AC_DEFINE(USE_PAM, 1, [Define to support Pluggable Authentication Modules])
|
||||
AC_DEFINE_UNQUOTED(SHADOW_PAM_CONVERSATION, [$pam_conv_function],[PAM converstation to use])
|
||||
AC_DEFINE_UNQUOTED(SHADOW_PAM_CONVERSATION, [$pam_conv_function],[PAM conversation to use])
|
||||
AM_CONDITIONAL(USE_PAM, [true])
|
||||
|
||||
AC_MSG_CHECKING(use login and su access checking if PAM not used)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
** 1/28/95
|
||||
** shadow-adduser 1.3:
|
||||
**
|
||||
** Basically a bug-fix on my additions in 1.2. Thanx to Terry Stewart
|
||||
** Basically a bug-fix on my additions in 1.2. Thanks to Terry Stewart
|
||||
** (stew@texas.net) for pointing out one of the many idiotic bugs I introduced.
|
||||
** It was such a stupid bug that I would have never seen it myself.
|
||||
**
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
** 1/28/95
|
||||
** shadow-adduser 1.3:
|
||||
**
|
||||
** Basically a bug-fix on my additions in 1.2. Thanx to Terry Stewart
|
||||
** Basically a bug-fix on my additions in 1.2. Thanks to Terry Stewart
|
||||
** (stew@texas.net) for pointing out one of the many idiotic bugs I introduced.
|
||||
** It was such a stupid bug that I would have never seen it myself.
|
||||
**
|
||||
|
||||
@@ -32,7 +32,7 @@ def_home_dir=/home/users
|
||||
# default shell
|
||||
def_shell=/bin/tcsh
|
||||
|
||||
# Defaul expiration date (mm/dd/yy)
|
||||
# Default expiration date (mm/dd/yy)
|
||||
def_expire=""
|
||||
|
||||
# default dates
|
||||
|
||||
@@ -480,7 +480,7 @@ X.B groupmems
|
||||
\fB-D\fR |
|
||||
[\fB-g\fI group_name \fR]
|
||||
X.SH DESCRIPTION
|
||||
The \fBgroupmems\fR utility allows a user to administer his/her own
|
||||
The \fBgroupmems\fR utility allows a user to administer their own
|
||||
group membership list without the requirement of superuser privileges.
|
||||
The \fBgroupmems\fR utility is for systems that configure its users to
|
||||
be in their own name sake primary group (i.e., guest / guest).
|
||||
|
||||
@@ -2,7 +2,7 @@ Hello Marek,
|
||||
|
||||
I have created a diffile against the 980403 release that adds
|
||||
functionality to newusers for automatic handling of users with only
|
||||
anonomous ftp login (using the guestgroup feature in ftpaccess, which
|
||||
anonymous ftp login (using the guestgroup feature in ftpaccess, which
|
||||
means that the users home directory looks like '/home/user/./'). It also
|
||||
adds a commandline argument to specify an initial directory structure
|
||||
for such users, with a tarball normally containing the bin,lib,etc
|
||||
|
||||
@@ -15,7 +15,7 @@ Changes:
|
||||
- code merged into lmain.c --cristiang
|
||||
|
||||
TODO: - support groups in the limits file
|
||||
(only usernames are supported at this momment :-( )
|
||||
(only usernames are supported at this moment :-( )
|
||||
|
||||
Setting user limits for shadow login program
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ KILLCHAR 025
|
||||
# home directories.
|
||||
# 022 is the default value, but 027, or even 077, could be considered
|
||||
# for increased privacy. There is no One True Answer here: each sysadmin
|
||||
# must make up his/her mind.
|
||||
# must make up their mind.
|
||||
UMASK 022
|
||||
|
||||
#
|
||||
|
||||
@@ -301,15 +301,12 @@ static int create_backup (const char *backup, FILE * fp)
|
||||
struct utimbuf ub;
|
||||
FILE *bkfp;
|
||||
int c;
|
||||
mode_t mask;
|
||||
|
||||
if (fstat (fileno (fp), &sb) != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
mask = umask (077);
|
||||
bkfp = fopen (backup, "w");
|
||||
(void) umask (mask);
|
||||
bkfp = fopen_set_perms (backup, "w", &sb);
|
||||
if (NULL == bkfp) {
|
||||
return -1;
|
||||
}
|
||||
@@ -378,28 +375,48 @@ bool commonio_present (const struct commonio_db *db)
|
||||
|
||||
int commonio_lock_nowait (struct commonio_db *db, bool log)
|
||||
{
|
||||
char file[1024];
|
||||
char lock[1024];
|
||||
char* file = NULL;
|
||||
char* lock = NULL;
|
||||
size_t lock_file_len;
|
||||
size_t file_len;
|
||||
int err;
|
||||
|
||||
if (db->locked) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
snprintf (file, sizeof file, "%s.%lu",
|
||||
file_len = strlen(db->filename) + 11;/* %lu max size */
|
||||
lock_file_len = strlen(db->filename) + 6; /* sizeof ".lock" */
|
||||
file = (char*)malloc(file_len);
|
||||
if(file == NULL) {
|
||||
err = ENOMEM;
|
||||
goto cleanup_ENOMEM;
|
||||
}
|
||||
lock = (char*)malloc(lock_file_len);
|
||||
if(lock == NULL) {
|
||||
err = ENOMEM;
|
||||
goto cleanup_ENOMEM;
|
||||
}
|
||||
snprintf (file, file_len, "%s.%lu",
|
||||
db->filename, (unsigned long) getpid ());
|
||||
snprintf (lock, sizeof lock, "%s.lock", db->filename);
|
||||
snprintf (lock, lock_file_len, "%s.lock", db->filename);
|
||||
if (do_lock_file (file, lock, log) != 0) {
|
||||
db->locked = true;
|
||||
lock_count++;
|
||||
return 1;
|
||||
err = 1;
|
||||
}
|
||||
return 0;
|
||||
cleanup_ENOMEM:
|
||||
if(file)
|
||||
free(file);
|
||||
if(lock)
|
||||
free(lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
int commonio_lock (struct commonio_db *db)
|
||||
{
|
||||
#ifdef HAVE_LCKPWDF
|
||||
/*#ifdef HAVE_LCKPWDF*/ /* not compatible with prefix option*/
|
||||
#if 0
|
||||
/*
|
||||
* only if the system libc has a real lckpwdf() - the one from
|
||||
* lockpw.c calls us and would cause infinite recursion!
|
||||
@@ -754,16 +771,16 @@ commonio_sort (struct commonio_db *db, int (*cmp) (const void *, const void *))
|
||||
for (ptr = db->head;
|
||||
(NULL != ptr)
|
||||
#if KEEP_NIS_AT_END
|
||||
&& (NULL != ptr->line)
|
||||
&& ( ('+' != ptr->line[0])
|
||||
&& ('-' != ptr->line[0]))
|
||||
&& ((NULL == ptr->line)
|
||||
|| (('+' != ptr->line[0])
|
||||
&& ('-' != ptr->line[0])))
|
||||
#endif
|
||||
;
|
||||
ptr = ptr->next) {
|
||||
n++;
|
||||
}
|
||||
#if KEEP_NIS_AT_END
|
||||
if ((NULL != ptr) && (NULL != ptr->line)) {
|
||||
if (NULL != ptr) {
|
||||
nis = ptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
#ifndef _COMMONIO_H
|
||||
#define _COMMONIO_H
|
||||
#ifndef COMMONIO_H
|
||||
#define COMMONIO_H
|
||||
|
||||
#ifdef WITH_SELINUX
|
||||
#include <selinux/selinux.h>
|
||||
|
||||
@@ -24,7 +24,7 @@ typedef unsigned char _Bool;
|
||||
|
||||
/* Take care of NLS matters. */
|
||||
#ifdef S_SPLINT_S
|
||||
extern char *setlocale(int categorie, const char *locale);
|
||||
extern char *setlocale(int categories, const char *locale);
|
||||
# define LC_ALL (6)
|
||||
extern char * bindtextdomain (const char * domainname, const char * dirname);
|
||||
extern char * textdomain (const char * domainname);
|
||||
|
||||
14
lib/getdef.c
14
lib/getdef.c
@@ -148,13 +148,14 @@ static struct itemdef knowndef_table[] = {
|
||||
#ifdef USE_PAM
|
||||
PAMDEFS
|
||||
#endif
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
#ifndef LOGINDEFS
|
||||
#define LOGINDEFS "/etc/login.defs"
|
||||
#endif
|
||||
|
||||
static char def_fname[] = LOGINDEFS; /* login config defs file */
|
||||
static const char* def_fname = LOGINDEFS; /* login config defs file */
|
||||
static bool def_loaded = false; /* are defs already loaded? */
|
||||
|
||||
/* local function prototypes */
|
||||
@@ -423,6 +424,17 @@ out:
|
||||
return (struct itemdef *) NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* setdef_config_file - set the default configuration file path
|
||||
*
|
||||
* must be called prior to any def* calls.
|
||||
*/
|
||||
|
||||
void setdef_config_file (const char* file)
|
||||
{
|
||||
def_fname = file;
|
||||
}
|
||||
|
||||
/*
|
||||
* def_load - load configuration table
|
||||
*
|
||||
|
||||
@@ -40,6 +40,7 @@ extern unsigned long getdef_ulong (const char *, unsigned long);
|
||||
extern unsigned int getdef_unum (const char *, unsigned int);
|
||||
extern /*@observer@*/ /*@null@*/const char *getdef_str (const char *);
|
||||
extern int putdef_str (const char *, const char *);
|
||||
extern void setdef_config_file (const char* file);
|
||||
|
||||
/* default UMASK value if not specified in /etc/login.defs */
|
||||
#define GETDEF_DEFAULT_UMASK 022
|
||||
|
||||
@@ -338,8 +338,7 @@ static /*@null@*/struct commonio_entry *merge_group_entries (
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
snprintf(new_line, new_line_len, "%s\n%s", gr1->line, gr2->line);
|
||||
new_line[new_line_len] = '\0';
|
||||
snprintf(new_line, new_line_len + 1, "%s\n%s", gr1->line, gr2->line);
|
||||
|
||||
/* Concatenate the 2 list of members */
|
||||
for (i=0; NULL != gptr1->gr_mem[i]; i++);
|
||||
|
||||
@@ -179,6 +179,9 @@ extern int getrange (char *range,
|
||||
unsigned long *min, bool *has_min,
|
||||
unsigned long *max, bool *has_max);
|
||||
|
||||
/* gettime.c */
|
||||
extern time_t gettime ();
|
||||
|
||||
/* get_uid.c */
|
||||
extern int get_uid (const char *uidstr, uid_t *uid);
|
||||
|
||||
@@ -251,9 +254,9 @@ extern void motd (void);
|
||||
/* myname.c */
|
||||
extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void);
|
||||
|
||||
/* pam_pass_non_interractive.c */
|
||||
/* pam_pass_non_interactive.c */
|
||||
#ifdef USE_PAM
|
||||
extern int do_pam_passwd_non_interractive (const char *pam_service,
|
||||
extern int do_pam_passwd_non_interactive (const char *pam_service,
|
||||
const char *username,
|
||||
const char* password);
|
||||
#endif /* USE_PAM */
|
||||
@@ -271,6 +274,21 @@ extern void do_pam_passwd (const char *user, bool silent, bool change_expired);
|
||||
/* port.c */
|
||||
extern bool isttytime (const char *, const char *, time_t);
|
||||
|
||||
/* prefix_flag.c */
|
||||
extern const char* process_prefix_flag (const char* short_opt, int argc, char **argv);
|
||||
extern struct group *prefix_getgrnam(const char *name);
|
||||
extern struct group *prefix_getgrgid(gid_t gid);
|
||||
extern struct passwd *prefix_getpwuid(uid_t uid);
|
||||
extern struct passwd *prefix_getpwnam(const char* name);
|
||||
extern struct spwd *prefix_getspnam(const char* name);
|
||||
extern struct group *prefix_getgr_nam_gid(const char *grname);
|
||||
extern void prefix_setpwent();
|
||||
extern struct passwd* prefix_getpwent();
|
||||
extern void prefix_endpwent();
|
||||
extern void prefix_setgrent();
|
||||
extern struct group* prefix_getgrent();
|
||||
extern void prefix_endgrent();
|
||||
|
||||
/* pwd2spwd.c */
|
||||
#ifndef USE_PAM
|
||||
extern struct spwd *pwd_to_spwd (const struct passwd *);
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
#include "commonio.h"
|
||||
#include "getdef.h"
|
||||
#include "sgroupio.h"
|
||||
|
||||
/*@null@*/ /*@only@*/struct sgrp *__sgr_dup (const struct sgrp *sgent)
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <shadow.h>
|
||||
#include <stdio.h>
|
||||
#include "commonio.h"
|
||||
#include "getdef.h"
|
||||
#include "shadowio.h"
|
||||
#ifdef WITH_TCB
|
||||
#include <tcb.h>
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
#ifndef _SHADOWIO_H
|
||||
#define _SHADOWIO_H
|
||||
#ifndef SHADOWIO_H
|
||||
#define SHADOWIO_H
|
||||
|
||||
#include "defines.h"
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@ static const bool range_exists(struct commonio_db *db, const char *owner)
|
||||
* subuid @val.
|
||||
*
|
||||
* @db: database to query
|
||||
* @owner: owning uid being queuried
|
||||
* @owner: owning uid being queried
|
||||
* @val: subuid being searched for.
|
||||
*
|
||||
* Returns a range of subuids belonging to @owner and including the subuid
|
||||
@@ -221,7 +221,7 @@ static const struct subordinate_range *find_range(struct commonio_db *db,
|
||||
|
||||
/*
|
||||
* Search loop above did not produce any result. Let's rerun it,
|
||||
* but this time try to matcha actual UIDs. The first entry that
|
||||
* but this time try to match actual UIDs. The first entry that
|
||||
* matches is considered a success.
|
||||
* (It may be specified as literal UID or as another username which
|
||||
* has the same UID as the username we are looking for.)
|
||||
@@ -418,7 +418,7 @@ fail:
|
||||
* @start: the first uid in the owned range
|
||||
* @count: the number of uids in the range
|
||||
*
|
||||
* Return 1 if the range is already present or on succcess. On error
|
||||
* Return 1 if the range is already present or on success. On error
|
||||
* return 0 and set errno appropriately.
|
||||
*/
|
||||
static int add_range(struct commonio_db *db,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
EXTRA_DIST = .indent.pro xgetXXbyYY.c
|
||||
|
||||
INCLUDES = -I$(top_srcdir)/lib
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/lib
|
||||
|
||||
noinst_LIBRARIES = libmisc.a
|
||||
|
||||
@@ -31,6 +31,7 @@ libmisc_a_SOURCES = \
|
||||
getdate.y \
|
||||
getgr_nam_gid.c \
|
||||
getrange.c \
|
||||
gettime.c \
|
||||
hushed.c \
|
||||
idmapping.h \
|
||||
idmapping.c \
|
||||
@@ -43,7 +44,8 @@ libmisc_a_SOURCES = \
|
||||
myname.c \
|
||||
obscure.c \
|
||||
pam_pass.c \
|
||||
pam_pass_non_interractive.c \
|
||||
pam_pass_non_interactive.c \
|
||||
prefix_flag.c \
|
||||
pwd2spwd.c \
|
||||
pwdcheck.c \
|
||||
pwd_init.c \
|
||||
|
||||
@@ -69,7 +69,7 @@ extern int failcheck (uid_t uid, struct faillog *fl, bool failed);
|
||||
extern void failprint (const struct faillog *);
|
||||
|
||||
/*
|
||||
* failtmp - update the cummulative failure log
|
||||
* failtmp - update the cumulative failure log
|
||||
*
|
||||
* failtmp updates the (struct utmp) formatted failure log which
|
||||
* maintains a record of all login failures.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 1991 - 1994, Julianne Frances Haugh
|
||||
* Copyright (c) 2008 - 2011, Nicolas François
|
||||
* Copyright (c) 2014, Red Hat, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -38,6 +39,117 @@
|
||||
#include "groupio.h"
|
||||
#include "getdef.h"
|
||||
|
||||
/*
|
||||
* get_ranges - Get the minimum and maximum ID ranges for the search
|
||||
*
|
||||
* This function will return the minimum and maximum ranges for IDs
|
||||
*
|
||||
* 0: The function completed successfully
|
||||
* EINVAL: The provided ranges are impossible (such as maximum < minimum)
|
||||
*
|
||||
* preferred_min: The special-case minimum value for a specifically-
|
||||
* requested ID, which may be lower than the standard min_id
|
||||
*/
|
||||
static int get_ranges (bool sys_group, gid_t *min_id, gid_t *max_id,
|
||||
gid_t *preferred_min)
|
||||
{
|
||||
gid_t gid_def_max = 0;
|
||||
|
||||
if (sys_group) {
|
||||
/* System groups */
|
||||
|
||||
/* A requested ID is allowed to be below the autoselect range */
|
||||
*preferred_min = (gid_t) 1;
|
||||
|
||||
/* Get the minimum ID range from login.defs or default to 101 */
|
||||
*min_id = (gid_t) getdef_ulong ("SYS_GID_MIN", 101UL);
|
||||
|
||||
/*
|
||||
* If SYS_GID_MAX is unspecified, we should assume it to be one
|
||||
* less than the GID_MIN (which is reserved for non-system accounts)
|
||||
*/
|
||||
gid_def_max = (gid_t) getdef_ulong ("GID_MIN", 1000UL) - 1;
|
||||
*max_id = (gid_t) getdef_ulong ("SYS_GID_MAX",
|
||||
(unsigned long) gid_def_max);
|
||||
|
||||
/* Check that the ranges make sense */
|
||||
if (*max_id < *min_id) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: SYS_GID_MIN (%lu), "
|
||||
"GID_MIN (%lu), SYS_GID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) *min_id,
|
||||
getdef_ulong ("GID_MIN", 1000UL),
|
||||
(unsigned long) *max_id);
|
||||
return EINVAL;
|
||||
}
|
||||
} else {
|
||||
/* Non-system groups */
|
||||
|
||||
/* Get the values from login.defs or use reasonable defaults */
|
||||
*min_id = (gid_t) getdef_ulong ("GID_MIN", 1000UL);
|
||||
*max_id = (gid_t) getdef_ulong ("GID_MAX", 60000UL);
|
||||
|
||||
/*
|
||||
* The preferred minimum should match the standard ID minimum
|
||||
* for non-system groups.
|
||||
*/
|
||||
*preferred_min = *min_id;
|
||||
|
||||
/* Check that the ranges make sense */
|
||||
if (*max_id < *min_id) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: GID_MIN (%lu), "
|
||||
"GID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) *min_id,
|
||||
(unsigned long) *max_id);
|
||||
return EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* check_gid - See if the requested GID is available
|
||||
*
|
||||
* On success, return 0
|
||||
* If the ID is in use, return EEXIST
|
||||
* If the ID is outside the range, return ERANGE
|
||||
* In other cases, return errno from getgrgid()
|
||||
*/
|
||||
static int check_gid (const gid_t gid,
|
||||
const gid_t gid_min,
|
||||
const gid_t gid_max,
|
||||
bool *used_gids)
|
||||
{
|
||||
/* First test that the preferred ID is in the range */
|
||||
if (gid < gid_min || gid > gid_max) {
|
||||
return ERANGE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether we already detected this GID
|
||||
* using the gr_next() loop
|
||||
*/
|
||||
if (used_gids != NULL && used_gids[gid]) {
|
||||
return EEXIST;
|
||||
}
|
||||
/* Check if the GID exists according to NSS */
|
||||
errno = 0;
|
||||
if (prefix_getgrgid (gid) != NULL) {
|
||||
return EEXIST;
|
||||
} else {
|
||||
/* getgrgid() was NULL
|
||||
* we have to ignore errors as temporary
|
||||
* failures of remote user identity services
|
||||
* would completely block user/group creation
|
||||
*/
|
||||
}
|
||||
|
||||
/* If we've made it here, the GID must be available */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* find_new_gid - Find a new unused GID.
|
||||
*
|
||||
@@ -49,161 +161,338 @@
|
||||
* Return 0 on success, -1 if no unused GIDs are available.
|
||||
*/
|
||||
int find_new_gid (bool sys_group,
|
||||
gid_t *gid,
|
||||
/*@null@*/gid_t const *preferred_gid)
|
||||
gid_t *gid,
|
||||
/*@null@*/gid_t const *preferred_gid)
|
||||
{
|
||||
const struct group *grp;
|
||||
gid_t gid_min, gid_max, group_id;
|
||||
bool *used_gids;
|
||||
const struct group *grp;
|
||||
gid_t gid_min, gid_max, preferred_min;
|
||||
gid_t group_id, id;
|
||||
gid_t lowest_found, highest_found;
|
||||
int result;
|
||||
int nospam = 0;
|
||||
|
||||
assert (gid != NULL);
|
||||
assert(gid != NULL);
|
||||
|
||||
if (!sys_group) {
|
||||
gid_min = (gid_t) getdef_ulong ("GID_MIN", 1000UL);
|
||||
gid_max = (gid_t) getdef_ulong ("GID_MAX", 60000UL);
|
||||
if (gid_max < gid_min) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) gid_min, (unsigned long) gid_max);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
gid_min = (gid_t) getdef_ulong ("SYS_GID_MIN", 101UL);
|
||||
gid_max = (gid_t) getdef_ulong ("GID_MIN", 1000UL) - 1;
|
||||
gid_max = (gid_t) getdef_ulong ("SYS_GID_MAX", (unsigned long) gid_max);
|
||||
if (gid_max < gid_min) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) gid_min, getdef_ulong ("GID_MIN", 1000UL), (unsigned long) gid_max);
|
||||
/*
|
||||
* First, figure out what ID range is appropriate for
|
||||
* automatic assignment
|
||||
*/
|
||||
result = get_ranges (sys_group, &gid_min, &gid_max, &preferred_min);
|
||||
if (result == EINVAL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Check if the preferred GID is available */
|
||||
if (preferred_gid) {
|
||||
result = check_gid (*preferred_gid, preferred_min, gid_max, NULL);
|
||||
if (result == 0) {
|
||||
/*
|
||||
* Make sure the GID isn't queued for use already
|
||||
*/
|
||||
if (gr_locate_gid (*preferred_gid) == NULL) {
|
||||
*gid = *preferred_gid;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* gr_locate_gid() found the GID in an as-yet uncommitted
|
||||
* entry. We'll proceed below and auto-set a GID.
|
||||
*/
|
||||
} else if (result == EEXIST || result == ERANGE) {
|
||||
/*
|
||||
* Continue on below. At this time, we won't
|
||||
* treat these two cases differently.
|
||||
*/
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred. We should report
|
||||
* this and fail the group creation.
|
||||
* This differs from the automatic creation
|
||||
* behavior below, since if a specific GID was
|
||||
* requested and generated an error, the user is
|
||||
* more likely to want to stop and address the
|
||||
* issue.
|
||||
*/
|
||||
fprintf (stderr,
|
||||
_("%s: Encountered error attempting to use "
|
||||
"preferred GID: %s\n"),
|
||||
Prog, strerror (result));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Search the entire group file,
|
||||
* looking for the next unused value.
|
||||
*
|
||||
* We first check the local database with gr_rewind/gr_next to find
|
||||
* all local values that are in use.
|
||||
*
|
||||
* We then compare the next free value to all databases (local and
|
||||
* remote) and iterate until we find a free one. If there are free
|
||||
* values beyond the lowest (system groups) or highest (non-system
|
||||
* groups), we will prefer those and avoid potentially reclaiming a
|
||||
* deleted group (which can be a security issue, since it may grant
|
||||
* access to files belonging to that former group).
|
||||
*
|
||||
* If there are no GIDs available at the end of the search, we will
|
||||
* have no choice but to iterate through the range looking for gaps.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Create an array to hold all of the discovered GIDs */
|
||||
used_gids = malloc (sizeof (bool) * (gid_max +1));
|
||||
if (NULL == used_gids) {
|
||||
fprintf (stderr,
|
||||
_("%s: failed to allocate memory: %s\n"),
|
||||
Prog, strerror (errno));
|
||||
_("%s: failed to allocate memory: %s\n"),
|
||||
Prog, strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
memset (used_gids, false, sizeof (bool) * (gid_max + 1));
|
||||
|
||||
if ( (NULL != preferred_gid)
|
||||
&& (*preferred_gid >= gid_min)
|
||||
&& (*preferred_gid <= gid_max)
|
||||
/* Check if the user exists according to NSS */
|
||||
&& (getgrgid (*preferred_gid) == NULL)
|
||||
/* Check also the local database in case of uncommitted
|
||||
* changes */
|
||||
&& (gr_locate_gid (*preferred_gid) == NULL)) {
|
||||
*gid = *preferred_gid;
|
||||
free (used_gids);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Search the entire group file,
|
||||
* looking for the largest unused value.
|
||||
*
|
||||
* We check the list of groups according to NSS (setgrent/getgrent),
|
||||
* but we also check the local database (gr_rewind/gr_next) in case
|
||||
* some groups were created but the changes were not committed yet.
|
||||
*/
|
||||
if (sys_group) {
|
||||
gid_t id;
|
||||
/* setgrent / getgrent / endgrent can be very slow with
|
||||
* LDAP configurations (and many accounts).
|
||||
* Since there is a limited amount of IDs to be tested
|
||||
* for system accounts, we just check the existence
|
||||
* of IDs with getgrgid.
|
||||
/* First look for the lowest and highest value in the local database */
|
||||
(void) gr_rewind ();
|
||||
highest_found = gid_min;
|
||||
lowest_found = gid_max;
|
||||
while ((grp = gr_next ()) != NULL) {
|
||||
/*
|
||||
* Does this entry have a lower GID than the lowest we've found
|
||||
* so far?
|
||||
*/
|
||||
group_id = gid_max;
|
||||
for (id = gid_max; id >= gid_min; id--) {
|
||||
if (getgrgid (id) != NULL) {
|
||||
group_id = id - 1;
|
||||
used_gids[id] = true;
|
||||
}
|
||||
if ((grp->gr_gid <= lowest_found) && (grp->gr_gid >= gid_min)) {
|
||||
lowest_found = grp->gr_gid - 1;
|
||||
}
|
||||
|
||||
(void) gr_rewind ();
|
||||
while ((grp = gr_next ()) != NULL) {
|
||||
if ((grp->gr_gid <= group_id) && (grp->gr_gid >= gid_min)) {
|
||||
group_id = grp->gr_gid - 1;
|
||||
}
|
||||
/* create index of used GIDs */
|
||||
if (grp->gr_gid <= gid_max) {
|
||||
used_gids[grp->gr_gid] = true;
|
||||
}
|
||||
/*
|
||||
* Does this entry have a higher GID than the highest we've found
|
||||
* so far?
|
||||
*/
|
||||
if ((grp->gr_gid >= highest_found) && (grp->gr_gid <= gid_max)) {
|
||||
highest_found = grp->gr_gid + 1;
|
||||
}
|
||||
} else {
|
||||
group_id = gid_min;
|
||||
setgrent ();
|
||||
while ((grp = getgrent ()) != NULL) {
|
||||
if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
|
||||
group_id = grp->gr_gid + 1;
|
||||
}
|
||||
/* create index of used GIDs */
|
||||
if (grp->gr_gid <= gid_max) {
|
||||
used_gids[grp->gr_gid] = true;
|
||||
}
|
||||
}
|
||||
endgrent ();
|
||||
|
||||
(void) gr_rewind ();
|
||||
while ((grp = gr_next ()) != NULL) {
|
||||
if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
|
||||
group_id = grp->gr_gid + 1;
|
||||
}
|
||||
/* create index of used GIDs */
|
||||
if (grp->gr_gid <= gid_max) {
|
||||
used_gids[grp->gr_gid] = true;
|
||||
}
|
||||
/* create index of used GIDs */
|
||||
if (grp->gr_gid >= gid_min
|
||||
&& grp->gr_gid <= gid_max) {
|
||||
|
||||
used_gids[grp->gr_gid] = true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If a group (resp. system group) with GID equal to GID_MAX (resp.
|
||||
* GID_MIN) exists, the above algorithm will give us GID_MAX+1
|
||||
* (resp. GID_MIN-1) even if not unique. Search for the first free
|
||||
* GID starting with GID_MIN (resp. GID_MAX).
|
||||
*/
|
||||
if (sys_group) {
|
||||
if (group_id < gid_min) {
|
||||
for (group_id = gid_max; group_id >= gid_min; group_id--) {
|
||||
if (false == used_gids[group_id]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (group_id < gid_min) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique system GID (no more available GIDs)\n"),
|
||||
Prog);
|
||||
SYSLOG ((LOG_WARN,
|
||||
"no more available GID on the system"));
|
||||
/*
|
||||
* For system groups, we want to start from the
|
||||
* top of the range and work downwards.
|
||||
*/
|
||||
|
||||
/*
|
||||
* At the conclusion of the gr_next() search, we will either
|
||||
* have a presumed-free GID or we will be at GID_MIN - 1.
|
||||
*/
|
||||
if (lowest_found < gid_min) {
|
||||
/*
|
||||
* In this case, a GID is in use at GID_MIN.
|
||||
*
|
||||
* We will reset the search to GID_MAX and proceed down
|
||||
* through all the GIDs (skipping those we detected with
|
||||
* used_gids) for a free one. It is a known issue that
|
||||
* this may result in reusing a previously-deleted GID,
|
||||
* so administrators should be instructed to use this
|
||||
* auto-detection with care (and prefer to assign GIDs
|
||||
* explicitly).
|
||||
*/
|
||||
lowest_found = gid_max;
|
||||
}
|
||||
|
||||
/* Search through all of the IDs in the range */
|
||||
for (id = lowest_found; id >= gid_min; id--) {
|
||||
result = check_gid (id, gid_min, gid_max, used_gids);
|
||||
if (result == 0) {
|
||||
/* This GID is available. Return it. */
|
||||
*gid = id;
|
||||
free (used_gids);
|
||||
return -1;
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This GID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique system GID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available GIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later GID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (group_id > gid_max) {
|
||||
for (group_id = gid_min; group_id <= gid_max; group_id++) {
|
||||
if (false == used_gids[group_id]) {
|
||||
break;
|
||||
|
||||
/*
|
||||
* If we get all the way through the loop, try again from GID_MAX,
|
||||
* unless that was where we previously started. (NOTE: the worst-case
|
||||
* scenario here is that we will run through (GID_MAX - GID_MIN - 1)
|
||||
* cycles *again* if we fall into this case with lowest_found as
|
||||
* GID_MAX - 1, all groups in the range in use and maintained by
|
||||
* network services such as LDAP.)
|
||||
*/
|
||||
if (lowest_found != gid_max) {
|
||||
for (id = gid_max; id >= gid_min; id--) {
|
||||
result = check_gid (id, gid_min, gid_max, used_gids);
|
||||
if (result == 0) {
|
||||
/* This GID is available. Return it. */
|
||||
*gid = id;
|
||||
free (used_gids);
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This GID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique system GID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available GIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later GID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
if (group_id > gid_max) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique GID (no more available GIDs)\n"),
|
||||
Prog);
|
||||
SYSLOG ((LOG_WARN, "no more available GID on the system"));
|
||||
}
|
||||
} else { /* !sys_group */
|
||||
/*
|
||||
* For non-system groups, we want to start from the
|
||||
* bottom of the range and work upwards.
|
||||
*/
|
||||
|
||||
/*
|
||||
* At the conclusion of the gr_next() search, we will either
|
||||
* have a presumed-free GID or we will be at GID_MAX + 1.
|
||||
*/
|
||||
if (highest_found > gid_max) {
|
||||
/*
|
||||
* In this case, a GID is in use at GID_MAX.
|
||||
*
|
||||
* We will reset the search to GID_MIN and proceed up
|
||||
* through all the GIDs (skipping those we detected with
|
||||
* used_gids) for a free one. It is a known issue that
|
||||
* this may result in reusing a previously-deleted GID,
|
||||
* so administrators should be instructed to use this
|
||||
* auto-detection with care (and prefer to assign GIDs
|
||||
* explicitly).
|
||||
*/
|
||||
highest_found = gid_min;
|
||||
}
|
||||
|
||||
/* Search through all of the IDs in the range */
|
||||
for (id = highest_found; id <= gid_max; id++) {
|
||||
result = check_gid (id, gid_min, gid_max, used_gids);
|
||||
if (result == 0) {
|
||||
/* This GID is available. Return it. */
|
||||
*gid = id;
|
||||
free (used_gids);
|
||||
return -1;
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This GID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique GID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available GIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later GID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we get all the way through the loop, try again from GID_MIN,
|
||||
* unless that was where we previously started. (NOTE: the worst-case
|
||||
* scenario here is that we will run through (GID_MAX - GID_MIN - 1)
|
||||
* cycles *again* if we fall into this case with highest_found as
|
||||
* GID_MIN + 1, all groups in the range in use and maintained by
|
||||
* network services such as LDAP.)
|
||||
*/
|
||||
if (highest_found != gid_min) {
|
||||
for (id = gid_min; id <= gid_max; id++) {
|
||||
result = check_gid (id, gid_min, gid_max, used_gids);
|
||||
if (result == 0) {
|
||||
/* This GID is available. Return it. */
|
||||
*gid = id;
|
||||
free (used_gids);
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This GID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique GID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available GIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later GID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The code reached here and found no available IDs in the range */
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique GID (no more available GIDs)\n"),
|
||||
Prog);
|
||||
SYSLOG ((LOG_WARN, "no more available GIDs on the system"));
|
||||
free (used_gids);
|
||||
*gid = group_id;
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 1991 - 1994, Julianne Frances Haugh
|
||||
* Copyright (c) 2008 - 2011, Nicolas François
|
||||
* Copyright (c) 2014, Red Hat, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -38,6 +39,117 @@
|
||||
#include "pwio.h"
|
||||
#include "getdef.h"
|
||||
|
||||
/*
|
||||
* get_ranges - Get the minimum and maximum ID ranges for the search
|
||||
*
|
||||
* This function will return the minimum and maximum ranges for IDs
|
||||
*
|
||||
* 0: The function completed successfully
|
||||
* EINVAL: The provided ranges are impossible (such as maximum < minimum)
|
||||
*
|
||||
* preferred_min: The special-case minimum value for a specifically-
|
||||
* requested ID, which may be lower than the standard min_id
|
||||
*/
|
||||
static int get_ranges (bool sys_user, uid_t *min_id, uid_t *max_id,
|
||||
uid_t *preferred_min)
|
||||
{
|
||||
uid_t uid_def_max = 0;
|
||||
|
||||
if (sys_user) {
|
||||
/* System users */
|
||||
|
||||
/* A requested ID is allowed to be below the autoselect range */
|
||||
*preferred_min = (uid_t) 1;
|
||||
|
||||
/* Get the minimum ID range from login.defs or default to 101 */
|
||||
*min_id = (uid_t) getdef_ulong ("SYS_UID_MIN", 101UL);
|
||||
|
||||
/*
|
||||
* If SYS_UID_MAX is unspecified, we should assume it to be one
|
||||
* less than the UID_MIN (which is reserved for non-system accounts)
|
||||
*/
|
||||
uid_def_max = (uid_t) getdef_ulong ("UID_MIN", 1000UL) - 1;
|
||||
*max_id = (uid_t) getdef_ulong ("SYS_UID_MAX",
|
||||
(unsigned long) uid_def_max);
|
||||
|
||||
/* Check that the ranges make sense */
|
||||
if (*max_id < *min_id) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: SYS_UID_MIN (%lu), "
|
||||
"UID_MIN (%lu), SYS_UID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) *min_id,
|
||||
getdef_ulong ("UID_MIN", 1000UL),
|
||||
(unsigned long) *max_id);
|
||||
return EINVAL;
|
||||
}
|
||||
} else {
|
||||
/* Non-system users */
|
||||
|
||||
/* Get the values from login.defs or use reasonable defaults */
|
||||
*min_id = (uid_t) getdef_ulong ("UID_MIN", 1000UL);
|
||||
*max_id = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
|
||||
|
||||
/*
|
||||
* The preferred minimum should match the standard ID minimum
|
||||
* for non-system users.
|
||||
*/
|
||||
*preferred_min = *min_id;
|
||||
|
||||
/* Check that the ranges make sense */
|
||||
if (*max_id < *min_id) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: UID_MIN (%lu), "
|
||||
"UID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) *min_id,
|
||||
(unsigned long) *max_id);
|
||||
return EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* check_uid - See if the requested UID is available
|
||||
*
|
||||
* On success, return 0
|
||||
* If the ID is in use, return EEXIST
|
||||
* If the ID is outside the range, return ERANGE
|
||||
* In other cases, return errno from getpwuid()
|
||||
*/
|
||||
static int check_uid(const uid_t uid,
|
||||
const uid_t uid_min,
|
||||
const uid_t uid_max,
|
||||
bool *used_uids)
|
||||
{
|
||||
/* First test that the preferred ID is in the range */
|
||||
if (uid < uid_min || uid > uid_max) {
|
||||
return ERANGE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check whether we already detected this UID
|
||||
* using the pw_next() loop
|
||||
*/
|
||||
if (used_uids != NULL && used_uids[uid]) {
|
||||
return EEXIST;
|
||||
}
|
||||
/* Check if the UID exists according to NSS */
|
||||
errno = 0;
|
||||
if (prefix_getpwuid(uid) != NULL) {
|
||||
return EEXIST;
|
||||
} else {
|
||||
/* getpwuid() was NULL
|
||||
* we have to ignore errors as temporary
|
||||
* failures of remote user identity services
|
||||
* would completely block user/group creation
|
||||
*/
|
||||
}
|
||||
|
||||
/* If we've made it here, the UID must be available */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* find_new_uid - Find a new unused UID.
|
||||
*
|
||||
@@ -48,162 +160,339 @@
|
||||
*
|
||||
* Return 0 on success, -1 if no unused UIDs are available.
|
||||
*/
|
||||
int find_new_uid (bool sys_user,
|
||||
uid_t *uid,
|
||||
/*@null@*/uid_t const *preferred_uid)
|
||||
int find_new_uid(bool sys_user,
|
||||
uid_t *uid,
|
||||
/*@null@*/uid_t const *preferred_uid)
|
||||
{
|
||||
const struct passwd *pwd;
|
||||
uid_t uid_min, uid_max, user_id;
|
||||
bool *used_uids;
|
||||
const struct passwd *pwd;
|
||||
uid_t uid_min, uid_max, preferred_min;
|
||||
uid_t user_id, id;
|
||||
uid_t lowest_found, highest_found;
|
||||
int result;
|
||||
int nospam = 0;
|
||||
|
||||
assert (uid != NULL);
|
||||
|
||||
if (!sys_user) {
|
||||
uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL);
|
||||
uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
|
||||
if (uid_max < uid_min) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) uid_min, (unsigned long) uid_max);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
uid_min = (uid_t) getdef_ulong ("SYS_UID_MIN", 101UL);
|
||||
uid_max = (uid_t) getdef_ulong ("UID_MIN", 1000UL) - 1;
|
||||
uid_max = (uid_t) getdef_ulong ("SYS_UID_MAX", (unsigned long) uid_max);
|
||||
if (uid_max < uid_min) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX (%lu)\n"),
|
||||
Prog, (unsigned long) uid_min, getdef_ulong ("UID_MIN", 1000UL), (unsigned long) uid_max);
|
||||
/*
|
||||
* First, figure out what ID range is appropriate for
|
||||
* automatic assignment
|
||||
*/
|
||||
result = get_ranges (sys_user, &uid_min, &uid_max, &preferred_min);
|
||||
if (result == EINVAL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Check if the preferred UID is available */
|
||||
if (preferred_uid) {
|
||||
result = check_uid (*preferred_uid, preferred_min, uid_max, NULL);
|
||||
if (result == 0) {
|
||||
/*
|
||||
* Make sure the UID isn't queued for use already
|
||||
*/
|
||||
if (pw_locate_uid (*preferred_uid) == NULL) {
|
||||
*uid = *preferred_uid;
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
* pw_locate_uid() found the UID in an as-yet uncommitted
|
||||
* entry. We'll proceed below and auto-set an UID.
|
||||
*/
|
||||
} else if (result == EEXIST || result == ERANGE) {
|
||||
/*
|
||||
* Continue on below. At this time, we won't
|
||||
* treat these two cases differently.
|
||||
*/
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred. We should report
|
||||
* this and fail the user creation.
|
||||
* This differs from the automatic creation
|
||||
* behavior below, since if a specific UID was
|
||||
* requested and generated an error, the user is
|
||||
* more likely to want to stop and address the
|
||||
* issue.
|
||||
*/
|
||||
fprintf (stderr,
|
||||
_("%s: Encountered error attempting to use "
|
||||
"preferred UID: %s\n"),
|
||||
Prog, strerror (result));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Search the entire passwd file,
|
||||
* looking for the next unused value.
|
||||
*
|
||||
* We first check the local database with pw_rewind/pw_next to find
|
||||
* all local values that are in use.
|
||||
*
|
||||
* We then compare the next free value to all databases (local and
|
||||
* remote) and iterate until we find a free one. If there are free
|
||||
* values beyond the lowest (system users) or highest (non-system
|
||||
* users), we will prefer those and avoid potentially reclaiming a
|
||||
* deleted user (which can be a security issue, since it may grant
|
||||
* access to files belonging to that former user).
|
||||
*
|
||||
* If there are no UIDs available at the end of the search, we will
|
||||
* have no choice but to iterate through the range looking for gaps.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Create an array to hold all of the discovered UIDs */
|
||||
used_uids = malloc (sizeof (bool) * (uid_max +1));
|
||||
if (NULL == used_uids) {
|
||||
fprintf (stderr,
|
||||
_("%s: failed to allocate memory: %s\n"),
|
||||
Prog, strerror (errno));
|
||||
_("%s: failed to allocate memory: %s\n"),
|
||||
Prog, strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
memset (used_uids, false, sizeof (bool) * (uid_max + 1));
|
||||
|
||||
if ( (NULL != preferred_uid)
|
||||
&& (*preferred_uid >= uid_min)
|
||||
&& (*preferred_uid <= uid_max)
|
||||
/* Check if the user exists according to NSS */
|
||||
&& (getpwuid (*preferred_uid) == NULL)
|
||||
/* Check also the local database in case of uncommitted
|
||||
* changes */
|
||||
&& (pw_locate_uid (*preferred_uid) == NULL)) {
|
||||
*uid = *preferred_uid;
|
||||
free (used_uids);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Search the entire password file,
|
||||
* looking for the largest unused value.
|
||||
*
|
||||
* We check the list of users according to NSS (setpwent/getpwent),
|
||||
* but we also check the local database (pw_rewind/pw_next) in case
|
||||
* some users were created but the changes were not committed yet.
|
||||
*/
|
||||
if (sys_user) {
|
||||
uid_t id;
|
||||
/* setpwent / getpwent / endpwent can be very slow with
|
||||
* LDAP configurations (and many accounts).
|
||||
* Since there is a limited amount of IDs to be tested
|
||||
* for system accounts, we just check the existence
|
||||
* of IDs with getpwuid.
|
||||
/* First look for the lowest and highest value in the local database */
|
||||
(void) pw_rewind ();
|
||||
highest_found = uid_min;
|
||||
lowest_found = uid_max;
|
||||
while ((pwd = pw_next ()) != NULL) {
|
||||
/*
|
||||
* Does this entry have a lower UID than the lowest we've found
|
||||
* so far?
|
||||
*/
|
||||
user_id = uid_max;
|
||||
for (id = uid_max; id >= uid_min; id--) {
|
||||
if (getpwuid (id) != NULL) {
|
||||
user_id = id - 1;
|
||||
used_uids[id] = true;
|
||||
}
|
||||
if ((pwd->pw_uid <= lowest_found) && (pwd->pw_uid >= uid_min)) {
|
||||
lowest_found = pwd->pw_uid - 1;
|
||||
}
|
||||
|
||||
(void) pw_rewind ();
|
||||
while ((pwd = pw_next ()) != NULL) {
|
||||
if ((pwd->pw_uid <= user_id) && (pwd->pw_uid >= uid_min)) {
|
||||
user_id = pwd->pw_uid - 1;
|
||||
}
|
||||
/* create index of used UIDs */
|
||||
if (pwd->pw_uid <= uid_max) {
|
||||
used_uids[pwd->pw_uid] = true;
|
||||
}
|
||||
/*
|
||||
* Does this entry have a higher UID than the highest we've found
|
||||
* so far?
|
||||
*/
|
||||
if ((pwd->pw_uid >= highest_found) && (pwd->pw_uid <= uid_max)) {
|
||||
highest_found = pwd->pw_uid + 1;
|
||||
}
|
||||
} else {
|
||||
user_id = uid_min;
|
||||
setpwent ();
|
||||
while ((pwd = getpwent ()) != NULL) {
|
||||
if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
|
||||
user_id = pwd->pw_uid + 1;
|
||||
}
|
||||
/* create index of used UIDs */
|
||||
if (pwd->pw_uid <= uid_max) {
|
||||
used_uids[pwd->pw_uid] = true;
|
||||
}
|
||||
}
|
||||
endpwent ();
|
||||
|
||||
(void) pw_rewind ();
|
||||
while ((pwd = pw_next ()) != NULL) {
|
||||
if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
|
||||
user_id = pwd->pw_uid + 1;
|
||||
}
|
||||
/* create index of used UIDs */
|
||||
if (pwd->pw_uid <= uid_max) {
|
||||
used_uids[pwd->pw_uid] = true;
|
||||
}
|
||||
/* create index of used UIDs */
|
||||
if (pwd->pw_uid >= uid_min
|
||||
&& pwd->pw_uid <= uid_max) {
|
||||
|
||||
used_uids[pwd->pw_uid] = true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If a user (resp. system user) with UID equal to UID_MAX (resp.
|
||||
* UID_MIN) exists, the above algorithm will give us UID_MAX+1
|
||||
* (resp. UID_MIN-1) even if not unique. Search for the first free
|
||||
* UID starting with UID_MIN (resp. UID_MAX).
|
||||
*/
|
||||
if (sys_user) {
|
||||
if (user_id < uid_min) {
|
||||
for (user_id = uid_max; user_id >= uid_min; user_id--) {
|
||||
if (false == used_uids[user_id]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (user_id < uid_min ) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique system UID (no more available UIDs)\n"),
|
||||
Prog);
|
||||
SYSLOG ((LOG_WARN,
|
||||
"no more available UID on the system"));
|
||||
/*
|
||||
* For system users, we want to start from the
|
||||
* top of the range and work downwards.
|
||||
*/
|
||||
|
||||
/*
|
||||
* At the conclusion of the pw_next() search, we will either
|
||||
* have a presumed-free UID or we will be at UID_MIN - 1.
|
||||
*/
|
||||
if (lowest_found < uid_min) {
|
||||
/*
|
||||
* In this case, an UID is in use at UID_MIN.
|
||||
*
|
||||
* We will reset the search to UID_MAX and proceed down
|
||||
* through all the UIDs (skipping those we detected with
|
||||
* used_uids) for a free one. It is a known issue that
|
||||
* this may result in reusing a previously-deleted UID,
|
||||
* so administrators should be instructed to use this
|
||||
* auto-detection with care (and prefer to assign UIDs
|
||||
* explicitly).
|
||||
*/
|
||||
lowest_found = uid_max;
|
||||
}
|
||||
|
||||
/* Search through all of the IDs in the range */
|
||||
for (id = lowest_found; id >= uid_min; id--) {
|
||||
result = check_uid (id, uid_min, uid_max, used_uids);
|
||||
if (result == 0) {
|
||||
/* This UID is available. Return it. */
|
||||
*uid = id;
|
||||
free (used_uids);
|
||||
return -1;
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This UID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique system UID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available UIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later UID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (user_id > uid_max) {
|
||||
for (user_id = uid_min; user_id <= uid_max; user_id++) {
|
||||
if (false == used_uids[user_id]) {
|
||||
break;
|
||||
|
||||
/*
|
||||
* If we get all the way through the loop, try again from UID_MAX,
|
||||
* unless that was where we previously started. (NOTE: the worst-case
|
||||
* scenario here is that we will run through (UID_MAX - UID_MIN - 1)
|
||||
* cycles *again* if we fall into this case with lowest_found as
|
||||
* UID_MAX - 1, all users in the range in use and maintained by
|
||||
* network services such as LDAP.)
|
||||
*/
|
||||
if (lowest_found != uid_max) {
|
||||
for (id = uid_max; id >= uid_min; id--) {
|
||||
result = check_uid (id, uid_min, uid_max, used_uids);
|
||||
if (result == 0) {
|
||||
/* This UID is available. Return it. */
|
||||
*uid = id;
|
||||
free (used_uids);
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This UID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique system UID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG((LOG_ERR,
|
||||
"Error checking available UIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later UID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
if (user_id > uid_max) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique UID (no more available UIDs)\n"),
|
||||
Prog);
|
||||
SYSLOG ((LOG_WARN, "no more available UID on the system"));
|
||||
}
|
||||
} else { /* !sys_user */
|
||||
/*
|
||||
* For non-system users, we want to start from the
|
||||
* bottom of the range and work upwards.
|
||||
*/
|
||||
|
||||
/*
|
||||
* At the conclusion of the pw_next() search, we will either
|
||||
* have a presumed-free UID or we will be at UID_MAX + 1.
|
||||
*/
|
||||
if (highest_found > uid_max) {
|
||||
/*
|
||||
* In this case, a UID is in use at UID_MAX.
|
||||
*
|
||||
* We will reset the search to UID_MIN and proceed up
|
||||
* through all the UIDs (skipping those we detected with
|
||||
* used_uids) for a free one. It is a known issue that
|
||||
* this may result in reusing a previously-deleted UID,
|
||||
* so administrators should be instructed to use this
|
||||
* auto-detection with care (and prefer to assign UIDs
|
||||
* explicitly).
|
||||
*/
|
||||
highest_found = uid_min;
|
||||
}
|
||||
|
||||
/* Search through all of the IDs in the range */
|
||||
for (id = highest_found; id <= uid_max; id++) {
|
||||
result = check_uid (id, uid_min, uid_max, used_uids);
|
||||
if (result == 0) {
|
||||
/* This UID is available. Return it. */
|
||||
*uid = id;
|
||||
free (used_uids);
|
||||
return -1;
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This UID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique UID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available UIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later UID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we get all the way through the loop, try again from UID_MIN,
|
||||
* unless that was where we previously started. (NOTE: the worst-case
|
||||
* scenario here is that we will run through (UID_MAX - UID_MIN - 1)
|
||||
* cycles *again* if we fall into this case with highest_found as
|
||||
* UID_MIN + 1, all users in the range in use and maintained by
|
||||
* network services such as LDAP.)
|
||||
*/
|
||||
if (highest_found != uid_min) {
|
||||
for (id = uid_min; id <= uid_max; id++) {
|
||||
result = check_uid (id, uid_min, uid_max, used_uids);
|
||||
if (result == 0) {
|
||||
/* This UID is available. Return it. */
|
||||
*uid = id;
|
||||
free (used_uids);
|
||||
return 0;
|
||||
} else if (result == EEXIST) {
|
||||
/* This UID is in use, we'll continue to the next */
|
||||
} else {
|
||||
/*
|
||||
* An unexpected error occurred.
|
||||
*
|
||||
* Only report it the first time to avoid spamming
|
||||
* the logs
|
||||
*
|
||||
*/
|
||||
if (!nospam) {
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique UID (%s). "
|
||||
"Suppressing additional messages.\n"),
|
||||
Prog, strerror (result));
|
||||
SYSLOG ((LOG_ERR,
|
||||
"Error checking available UIDs: %s",
|
||||
strerror (result)));
|
||||
nospam = 1;
|
||||
}
|
||||
/*
|
||||
* We will continue anyway. Hopefully a later UID
|
||||
* will work properly.
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The code reached here and found no available IDs in the range */
|
||||
fprintf (stderr,
|
||||
_("%s: Can't get unique UID (no more available UIDs)\n"),
|
||||
Prog);
|
||||
SYSLOG ((LOG_WARN, "no more available UIDs on the system"));
|
||||
free (used_uids);
|
||||
*uid = user_id;
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
#endif
|
||||
|
||||
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
|
||||
as well as gratuitiously global symbol names, so we can have multiple
|
||||
as well as gratuitously global symbol names, so we can have multiple
|
||||
yacc generated parsers in the same program. Note that these are only
|
||||
the variables produced by yacc. If other parser generators (bison,
|
||||
byacc, etc) produce additional global names that conflict at link time,
|
||||
|
||||
89
libmisc/gettime.c
Normal file
89
libmisc/gettime.c
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Chris Lamb
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the copyright holders or contributors may not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
|
||||
/*
|
||||
* gettime() returns the time as the number of seconds since the Epoch
|
||||
*
|
||||
* Like time(), gettime() returns the time as the number of seconds since the
|
||||
* Epoch, 1970-01-01 00:00:00 +0000 (UTC), except that if the SOURCE_DATE_EPOCH
|
||||
* environment variable is exported it will use that instead.
|
||||
*/
|
||||
/*@observer@*/time_t gettime ()
|
||||
{
|
||||
char *endptr;
|
||||
char *source_date_epoch;
|
||||
time_t fallback;
|
||||
unsigned long long epoch;
|
||||
|
||||
fallback = time (NULL);
|
||||
source_date_epoch = getenv ("SOURCE_DATE_EPOCH");
|
||||
|
||||
if (!source_date_epoch)
|
||||
return fallback;
|
||||
|
||||
errno = 0;
|
||||
epoch = strtoull (source_date_epoch, &endptr, 10);
|
||||
if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0))
|
||||
|| (errno != 0 && epoch == 0)) {
|
||||
fprintf (stderr,
|
||||
_("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n"),
|
||||
strerror(errno));
|
||||
} else if (endptr == source_date_epoch) {
|
||||
fprintf (stderr,
|
||||
_("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n"),
|
||||
endptr);
|
||||
} else if (*endptr != '\0') {
|
||||
fprintf (stderr,
|
||||
_("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n"),
|
||||
endptr);
|
||||
} else if (epoch > ULONG_MAX) {
|
||||
fprintf (stderr,
|
||||
_("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to %lu but was found to be: %llu\n"),
|
||||
ULONG_MAX, epoch);
|
||||
} else if (epoch > fallback) {
|
||||
fprintf (stderr,
|
||||
_("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to the current time (%lu) but was found to be: %llu\n"),
|
||||
fallback, epoch);
|
||||
} else {
|
||||
/* Valid */
|
||||
return (time_t)epoch;
|
||||
}
|
||||
|
||||
return fallback;
|
||||
}
|
||||
@@ -148,7 +148,7 @@ void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings,
|
||||
pos += written;
|
||||
}
|
||||
|
||||
/* Write the mapping to the maping file */
|
||||
/* Write the mapping to the mapping file */
|
||||
fd = openat(proc_dir_fd, map_file, O_WRONLY);
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, _("%s: open of %s failed: %s\n"),
|
||||
|
||||
@@ -134,7 +134,7 @@ failed_conversation:
|
||||
*
|
||||
* Return 0 on success, 1 on failure.
|
||||
*/
|
||||
int do_pam_passwd_non_interractive (const char *pam_service,
|
||||
int do_pam_passwd_non_interactive (const char *pam_service,
|
||||
const char *username,
|
||||
const char* password)
|
||||
{
|
||||
340
libmisc/prefix_flag.c
Normal file
340
libmisc/prefix_flag.c
Normal file
@@ -0,0 +1,340 @@
|
||||
/*
|
||||
* Copyright (c) 2011 , Julian Pidancet
|
||||
* Copyright (c) 2011 , Nicolas François
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the copyright holders or contributors may not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ident "$Id$"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
/*@-exitarg@*/
|
||||
#include "exitcodes.h"
|
||||
#include "groupio.h"
|
||||
#include "pwio.h"
|
||||
#ifdef SHADOWGRP
|
||||
#include "sgroupio.h"
|
||||
#endif
|
||||
#include "shadowio.h"
|
||||
#ifdef ENABLE_SUBIDS
|
||||
#include "subordinateio.h"
|
||||
#endif /* ENABLE_SUBIDS */
|
||||
#include "getdef.h"
|
||||
|
||||
static char *passwd_db_file = NULL;
|
||||
static char *spw_db_file = NULL;
|
||||
static char *group_db_file = NULL;
|
||||
static char *sgroup_db_file = NULL;
|
||||
static char *suid_db_file = NULL;
|
||||
static char *sgid_db_file = NULL;
|
||||
static char *def_conf_file = NULL;
|
||||
static FILE* fp_pwent = NULL;
|
||||
static FILE* fp_grent = NULL;
|
||||
|
||||
/*
|
||||
* process_prefix_flag - prefix all paths if given the --prefix option
|
||||
*
|
||||
* This shall be called before accessing the passwd, group, shadow,
|
||||
* gshadow, useradd's default, login.defs files (non exhaustive list)
|
||||
* or authenticating the caller.
|
||||
*
|
||||
* The audit, syslog, or locale files shall be open before
|
||||
*/
|
||||
extern const char* process_prefix_flag (const char* short_opt, int argc, char **argv)
|
||||
{
|
||||
/*
|
||||
* Parse the command line options.
|
||||
*/
|
||||
int i;
|
||||
const char *prefix = NULL;
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
if ( (strcmp (argv[i], "--prefix") == 0)
|
||||
|| (strcmp (argv[i], short_opt) == 0)) {
|
||||
if (NULL != prefix) {
|
||||
fprintf (stderr,
|
||||
_("%s: multiple --prefix options\n"),
|
||||
Prog);
|
||||
exit (E_BAD_ARG);
|
||||
}
|
||||
|
||||
if (i + 1 == argc) {
|
||||
fprintf (stderr,
|
||||
_("%s: option '%s' requires an argument\n"),
|
||||
Prog, argv[i]);
|
||||
exit (E_BAD_ARG);
|
||||
}
|
||||
prefix = argv[i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (prefix != NULL) {
|
||||
if ( prefix[0] == '\0' || !strcmp(prefix, "/"))
|
||||
return ""; /* if prefix is "/" then we ignore the flag option */
|
||||
/* should we prevent symbolic link from being used as a prefix? */
|
||||
|
||||
size_t len;
|
||||
len = strlen(prefix) + strlen(PASSWD_FILE) + 2;
|
||||
passwd_db_file = xmalloc(len);
|
||||
snprintf(passwd_db_file, len, "%s/%s", prefix, PASSWD_FILE);
|
||||
pw_setdbname(passwd_db_file);
|
||||
|
||||
len = strlen(prefix) + strlen(GROUP_FILE) + 2;
|
||||
group_db_file = xmalloc(len);
|
||||
snprintf(group_db_file, len, "%s/%s", prefix, GROUP_FILE);
|
||||
gr_setdbname(group_db_file);
|
||||
|
||||
#ifdef SHADOWGRP
|
||||
len = strlen(prefix) + strlen(SGROUP_FILE) + 2;
|
||||
sgroup_db_file = xmalloc(len);
|
||||
snprintf(sgroup_db_file, len, "%s/%s", prefix, SGROUP_FILE);
|
||||
sgr_setdbname(sgroup_db_file);
|
||||
#endif
|
||||
#ifdef USE_NIS
|
||||
__setspNIS(0); /* disable NIS for now, at least until it is properly supporting a "prefix" */
|
||||
#endif
|
||||
|
||||
len = strlen(prefix) + strlen(SHADOW_FILE) + 2;
|
||||
spw_db_file = xmalloc(len);
|
||||
snprintf(spw_db_file, len, "%s/%s", prefix, SHADOW_FILE);
|
||||
spw_setdbname(spw_db_file);
|
||||
|
||||
|
||||
len = strlen(prefix) + strlen("/etc/subuid") + 2;
|
||||
suid_db_file = xmalloc(len);
|
||||
snprintf(suid_db_file, len, "%s/%s", prefix, "/etc/subuid");
|
||||
sub_uid_setdbname(suid_db_file);
|
||||
|
||||
len = strlen(prefix) + strlen("/etc/subgid") + 2;
|
||||
sgid_db_file = xmalloc(len);
|
||||
snprintf(sgid_db_file, len, "%s/%s", prefix, "/etc/subgid");
|
||||
sub_gid_setdbname(sgid_db_file);
|
||||
|
||||
len = strlen(prefix) + strlen("/etc/login.defs") + 2;
|
||||
def_conf_file = xmalloc(len);
|
||||
snprintf(def_conf_file, len, "%s/%s", prefix, "/etc/login.defs");
|
||||
setdef_config_file(def_conf_file);
|
||||
}
|
||||
|
||||
if (prefix == NULL)
|
||||
return "";
|
||||
return prefix;
|
||||
}
|
||||
|
||||
|
||||
extern struct group *prefix_getgrnam(const char *name)
|
||||
{
|
||||
if (group_db_file) {
|
||||
FILE* fg;
|
||||
struct group * grp = NULL;
|
||||
|
||||
fg = fopen(group_db_file, "rt");
|
||||
if(!fg)
|
||||
return NULL;
|
||||
while(grp = fgetgrent(fg)) {
|
||||
if(!strcmp(name, grp->gr_name))
|
||||
break;
|
||||
}
|
||||
fclose(fg);
|
||||
return grp;
|
||||
}
|
||||
|
||||
return getgrnam(name);
|
||||
}
|
||||
|
||||
extern struct group *prefix_getgrgid(gid_t gid)
|
||||
{
|
||||
if (group_db_file) {
|
||||
FILE* fg;
|
||||
struct group * grp = NULL;
|
||||
|
||||
fg = fopen(group_db_file, "rt");
|
||||
if(!fg)
|
||||
return NULL;
|
||||
while(grp = fgetgrent(fg)) {
|
||||
if(gid == grp->gr_gid)
|
||||
break;
|
||||
}
|
||||
fclose(fg);
|
||||
return grp;
|
||||
}
|
||||
|
||||
return getgrgid(gid);
|
||||
}
|
||||
|
||||
extern struct passwd *prefix_getpwuid(uid_t uid)
|
||||
{
|
||||
if (passwd_db_file) {
|
||||
FILE* fg;
|
||||
struct passwd *pwd = NULL;
|
||||
|
||||
fg = fopen(passwd_db_file, "rt");
|
||||
if(!fg)
|
||||
return NULL;
|
||||
while(pwd = fgetpwent(fg)) {
|
||||
if(uid == pwd->pw_uid)
|
||||
break;
|
||||
}
|
||||
fclose(fg);
|
||||
return pwd;
|
||||
}
|
||||
else {
|
||||
return getpwuid(uid);
|
||||
}
|
||||
}
|
||||
extern struct passwd *prefix_getpwnam(const char* name)
|
||||
{
|
||||
if (passwd_db_file) {
|
||||
FILE* fg;
|
||||
struct passwd *pwd = NULL;
|
||||
|
||||
fg = fopen(passwd_db_file, "rt");
|
||||
if(!fg)
|
||||
return NULL;
|
||||
while(pwd = fgetpwent(fg)) {
|
||||
if(!strcmp(name, pwd->pw_name))
|
||||
break;
|
||||
}
|
||||
fclose(fg);
|
||||
return pwd;
|
||||
}
|
||||
else {
|
||||
return getpwnam(name);
|
||||
}
|
||||
}
|
||||
extern struct spwd *prefix_getspnam(const char* name)
|
||||
{
|
||||
if (spw_db_file) {
|
||||
FILE* fg;
|
||||
struct spwd *sp = NULL;
|
||||
|
||||
fg = fopen(spw_db_file, "rt");
|
||||
if(!fg)
|
||||
return NULL;
|
||||
while(sp = fgetspent(fg)) {
|
||||
if(!strcmp(name, sp->sp_namp))
|
||||
break;
|
||||
}
|
||||
fclose(fg);
|
||||
return sp;
|
||||
}
|
||||
else {
|
||||
return getspnam(name);
|
||||
}
|
||||
}
|
||||
|
||||
extern void prefix_setpwent()
|
||||
{
|
||||
if(!passwd_db_file) {
|
||||
setpwent();
|
||||
return;
|
||||
}
|
||||
if (fp_pwent)
|
||||
fclose (fp_pwent);
|
||||
|
||||
fp_pwent = fopen(passwd_db_file, "rt");
|
||||
if(!fp_pwent)
|
||||
return;
|
||||
}
|
||||
extern struct passwd* prefix_getpwent()
|
||||
{
|
||||
if(!passwd_db_file) {
|
||||
return getpwent();
|
||||
}
|
||||
return fgetpwent(fp_pwent);
|
||||
}
|
||||
extern void prefix_endpwent()
|
||||
{
|
||||
if(!passwd_db_file) {
|
||||
endpwent();
|
||||
return;
|
||||
}
|
||||
if (fp_pwent)
|
||||
fclose(fp_pwent);
|
||||
fp_pwent = NULL;
|
||||
}
|
||||
|
||||
extern void prefix_setgrent()
|
||||
{
|
||||
if(!group_db_file) {
|
||||
setgrent();
|
||||
return;
|
||||
}
|
||||
if (fp_grent)
|
||||
fclose (fp_grent);
|
||||
|
||||
fp_grent = fopen(group_db_file, "rt");
|
||||
if(!fp_grent)
|
||||
return;
|
||||
}
|
||||
extern struct group* prefix_getgrent()
|
||||
{
|
||||
if(!group_db_file) {
|
||||
return getgrent();
|
||||
}
|
||||
return fgetgrent(fp_grent);
|
||||
}
|
||||
extern void prefix_endgrent()
|
||||
{
|
||||
if(!group_db_file) {
|
||||
endgrent();
|
||||
return;
|
||||
}
|
||||
if (fp_grent)
|
||||
fclose(fp_grent);
|
||||
fp_grent = NULL;
|
||||
}
|
||||
|
||||
extern struct group *prefix_getgr_nam_gid(const char *grname)
|
||||
{
|
||||
long long int gid;
|
||||
char *endptr;
|
||||
|
||||
if (NULL == grname) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (group_db_file) {
|
||||
errno = 0;
|
||||
gid = strtoll (grname, &endptr, 10);
|
||||
if ( ('\0' != *grname)
|
||||
&& ('\0' == *endptr)
|
||||
&& (ERANGE != errno)
|
||||
&& (gid == (gid_t)gid)) {
|
||||
return prefix_getgrgid ((gid_t) gid);
|
||||
}
|
||||
return prefix_getgrnam (grname);
|
||||
}
|
||||
else
|
||||
return getgr_nam_gid(grname);
|
||||
}
|
||||
@@ -171,7 +171,7 @@ static void read_env_file (const char *filename)
|
||||
cp++;
|
||||
goto d_quote;
|
||||
}
|
||||
eise if (*cp == '\0') {
|
||||
else if (*cp == '\0') {
|
||||
/* end of string */
|
||||
goto finished;
|
||||
} else {
|
||||
|
||||
@@ -126,7 +126,7 @@ static char *date_formats[] = {
|
||||
#else
|
||||
/*
|
||||
* days and juldays are used to compute the number of days in the
|
||||
* current month, and the cummulative number of days in the preceding
|
||||
* current month, and the cumulative number of days in the preceding
|
||||
* months. they are declared so that january is 1, not 0.
|
||||
*/
|
||||
static short days[13] = { 0,
|
||||
|
||||
@@ -170,6 +170,9 @@ static int user_busy_processes (const char *name, uid_t uid)
|
||||
proc = opendir ("/proc");
|
||||
if (proc == NULL) {
|
||||
perror ("opendir /proc");
|
||||
#ifdef ENABLE_SUBIDS
|
||||
sub_uid_close();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
if (stat ("/", &sbroot) != 0) {
|
||||
|
||||
@@ -88,7 +88,7 @@ static bool is_my_tty (const char *tty)
|
||||
* session
|
||||
*
|
||||
* The utmp file is scanned for an entry with the same process ID.
|
||||
* The line enterred by the *getty / telnetd, etc. should also match
|
||||
* The line entered by the *getty / telnetd, etc. should also match
|
||||
* the current terminal.
|
||||
*
|
||||
* When an entry is returned by get_current_utmp, and if the utmp
|
||||
|
||||
@@ -215,5 +215,4 @@ $(man_MANS):
|
||||
@echo "Error: you need to run configure with '--enable-man'"
|
||||
@echo " in order to regenerate man pages."
|
||||
@echo ""
|
||||
@false
|
||||
endif
|
||||
|
||||
10
man/README.md
Normal file
10
man/README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
The [official releases](https://github.com/shadow-maint/shadow/releases) ship
|
||||
with pre-built manpages.
|
||||
|
||||
The content of the man pages however is dependent on compile flags. So the
|
||||
pre-built ones might not fit your version of shadow. To build them yourself use
|
||||
`--enable-man`. Furthermore the following build requirements will be needed:
|
||||
- xsltproc
|
||||
- docbook 4
|
||||
- docbook stylesheets
|
||||
- xml2po
|
||||
@@ -83,7 +83,7 @@
|
||||
The <command>chage</command> command changes the number of days between
|
||||
password changes and the date of the last password change. This
|
||||
information is used by the system to determine when a user must change
|
||||
his/her password.
|
||||
their password.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
<para>
|
||||
Set the minimum number of days between password changes to
|
||||
<replaceable>MIN_DAYS</replaceable>. A value of zero for this field
|
||||
indicates that the user may change his/her password at any time.
|
||||
indicates that the user may change their password at any time.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -181,8 +181,8 @@
|
||||
Set the maximum number of days during which a password is valid.
|
||||
When <replaceable>MAX_DAYS</replaceable> plus
|
||||
<replaceable>LAST_DAY</replaceable> is less than the current
|
||||
day, the user will be required to change his/her password before
|
||||
being able to use his/her account. This occurrence can be planned for
|
||||
day, the user will be required to change their password before
|
||||
being able to use their account. This occurrence can be planned for
|
||||
in advance by use of the <option>-W</option> option, which
|
||||
provides the user with advance warning.
|
||||
</para>
|
||||
@@ -214,7 +214,7 @@
|
||||
Set the number of days of warning before a password change is
|
||||
required. The <replaceable>WARN_DAYS</replaceable> option is the
|
||||
number of days prior to the password expiring that a user will
|
||||
be warned his/her password is about to expire.
|
||||
be warned their password is about to expire.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -235,7 +235,7 @@
|
||||
</para>
|
||||
<para>The <command>chage</command> command is restricted to the root
|
||||
user, except for the <option>-l</option> option, which may be used by
|
||||
an unprivileged user to determine when his/her password or account is due
|
||||
an unprivileged user to determine when their password or account is due
|
||||
to expire.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -42,12 +42,11 @@ man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml
|
||||
-nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $<
|
||||
|
||||
clean-local:
|
||||
for d in man1 man3 man5 man8; do [ -d $$d ] && rmdir $$d; done
|
||||
rm -rf man1 man3 man5 man8
|
||||
|
||||
else
|
||||
$(man_MANS):
|
||||
@echo you need to run configure with --enable-man to generate man pages
|
||||
@false
|
||||
endif
|
||||
|
||||
man8/grpconv.8 man8/grpunconv.8 man8/pwunconv.8: man8/pwconv.8
|
||||
|
||||
@@ -14,7 +14,6 @@ include ../generate_mans.mak
|
||||
else
|
||||
$(man_MANS):
|
||||
@echo you need to run configure with --enable-man to generate man pages
|
||||
@false
|
||||
endif
|
||||
|
||||
CLEANFILES = .xml2po.mo $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml
|
||||
|
||||
@@ -212,6 +212,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-P</option>, <option>--prefix</option> <replaceable>PREFIX_DIR</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Apply changes in the <replaceable>PREFIX_DIR</replaceable>
|
||||
directory and use the configuration files from the
|
||||
<replaceable>PREFIX_DIR</replaceable> directory.
|
||||
This option does not chroot and is intended for preparing
|
||||
a cross-compilation target.
|
||||
Some limitations: NIS and LDAP users/groups are not verified.
|
||||
PAM authentication is using the host files.
|
||||
No SELINUX support.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -109,6 +109,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-P</option>, <option>--prefix</option> <replaceable>PREFIX_DIR</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Apply changes in the <replaceable>PREFIX_DIR</replaceable>
|
||||
directory and use the configuration files from the
|
||||
<replaceable>PREFIX_DIR</replaceable> directory.
|
||||
This option does not chroot and is intended for preparing
|
||||
a cross-compilation target.
|
||||
Some limitations: NIS and LDAP users/groups are not verified.
|
||||
PAM authentication is using the host files.
|
||||
No SELINUX support.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
The <command>groupmems</command> command allows a user to administer
|
||||
his/her own group membership list without the requirement of
|
||||
their own group membership list without the requirement of
|
||||
superuser privileges. The <command>groupmems</command> utility is for
|
||||
systems that configure its users to be in their own name sake primary
|
||||
group (i.e., guest / guest).
|
||||
|
||||
@@ -186,6 +186,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-P</option>, <option>--prefix</option> <replaceable>PREFIX_DIR</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Apply changes in the <replaceable>PREFIX_DIR</replaceable>
|
||||
directory and use the configuration files from the
|
||||
<replaceable>PREFIX_DIR</replaceable> directory.
|
||||
This option does not chroot and is intended for preparing
|
||||
a cross-compilation target.
|
||||
Some limitations: NIS and LDAP users/groups are not verified.
|
||||
PAM authentication is using the host files.
|
||||
No SELINUX support.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
@@ -239,43 +256,61 @@
|
||||
<varlistentry>
|
||||
<term><replaceable>0</replaceable></term>
|
||||
<listitem>
|
||||
<para>success</para>
|
||||
<para>E_SUCCESS: success</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>2</replaceable></term>
|
||||
<listitem>
|
||||
<para>invalid command syntax</para>
|
||||
<para>E_USAGE: invalid command syntax</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>3</replaceable></term>
|
||||
<listitem>
|
||||
<para>invalid argument to option</para>
|
||||
<para>E_BAD_ARG: invalid argument to option</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>4</replaceable></term>
|
||||
<listitem>
|
||||
<para>specified group doesn't exist</para>
|
||||
<para>E_GID_IN_USE: specified group doesn't exist</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>6</replaceable></term>
|
||||
<listitem>
|
||||
<para>specified group doesn't exist</para>
|
||||
<para>E_NOTFOUND: specified group doesn't exist</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>9</replaceable></term>
|
||||
<listitem>
|
||||
<para>group name already in use</para>
|
||||
<para>E_NAME_IN_USE: group name already in use</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>10</replaceable></term>
|
||||
<listitem>
|
||||
<para>can't update group file</para>
|
||||
<para>E_GRP_UPDATE: can't update group file</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>11</replaceable></term>
|
||||
<listitem>
|
||||
<para>E_CLEANUP_SERVICE: can't setup cleanup service</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>12</replaceable></term>
|
||||
<listitem>
|
||||
<para>E_PAM_USERNAME: can't determine your username for use with pam</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><replaceable>13</replaceable></term>
|
||||
<listitem>
|
||||
<para>E_PAM_ERROR: pam returned an error, see syslog facility id groupmod for the PAM error message</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
The <command>passwd</command> command changes passwords for user accounts.
|
||||
A normal user may only change the password for his/her own account, while
|
||||
A normal user may only change the password for their own account, while
|
||||
the superuser may change the password for any account.
|
||||
<command>passwd</command> also changes the account or associated
|
||||
password validity period.
|
||||
@@ -97,7 +97,7 @@
|
||||
<refsect2 id='password_changes'>
|
||||
<title>Password Changes</title>
|
||||
<para>
|
||||
The user is first prompted for his/her old password, if one is
|
||||
The user is first prompted for their old password, if one is
|
||||
present. This password is then encrypted and compared against the
|
||||
stored password. The user has only one chance to enter the correct
|
||||
password. The superuser is permitted to bypass this step so that
|
||||
@@ -206,7 +206,7 @@
|
||||
<listitem>
|
||||
<para>
|
||||
Immediately expire an account's password. This in effect can
|
||||
force a user to change his/her password at the user's next login.
|
||||
force a user to change their password at the user's next login.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -273,7 +273,7 @@
|
||||
<para>
|
||||
Set the minimum number of days between password changes to
|
||||
<replaceable>MIN_DAYS</replaceable>. A value of zero for this field
|
||||
indicates that the user may change his/her password at any time.
|
||||
indicates that the user may change their password at any time.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -349,7 +349,7 @@
|
||||
Set the number of days of warning before a password change is
|
||||
required. The <replaceable>WARN_DAYS</replaceable> option is
|
||||
the number of days prior to the password expiring that a user
|
||||
will be warned that his/her password is about to expire.
|
||||
will be warned that their password is about to expire.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -363,6 +363,11 @@
|
||||
<replaceable>MAX_DAYS</replaceable>, the password is required
|
||||
to be changed.
|
||||
</para>
|
||||
<para>
|
||||
Passing the number <emphasis remap='I'>-1</emphasis> as
|
||||
<replaceable>MAX_DAYS</replaceable> will remove checking a
|
||||
password's validity.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
38
man/po/da.po
38
man/po/da.po
@@ -1023,7 +1023,7 @@ msgstr ""
|
||||
#| "<option>-f</option>, <option>--inactive</option> "
|
||||
#| "<replaceable>INACTIVE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-f</option>, <option>--inactive</option> <replaceable>INAKTIV</"
|
||||
@@ -1052,7 +1052,7 @@ msgstr ""
|
||||
#| "<option>-e</option>, <option>--expiredate</option> "
|
||||
#| "<replaceable>EXPIRE_DATE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-e</option>, <option>--expiredate</option> "
|
||||
@@ -1065,8 +1065,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1076,7 +1076,7 @@ msgstr ""
|
||||
#| "<option>-f</option>, <option>--inactive</option> "
|
||||
#| "<replaceable>INACTIVE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-f</option>, <option>--inactive</option> <replaceable>INAKTIV</"
|
||||
@@ -1099,7 +1099,7 @@ msgstr ""
|
||||
#| "<option>-e</option>, <option>--expiredate</option> "
|
||||
#| "<replaceable>EXPIRE_DATE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-e</option>, <option>--expiredate</option> "
|
||||
@@ -1112,8 +1112,8 @@ msgstr ""
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -4307,7 +4307,7 @@ msgstr ""
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -4318,7 +4318,7 @@ msgstr ""
|
||||
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -4435,7 +4435,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
"Angiv øjeblikkelig en kontos adgangskode som udløbet. Dette kan tvinge en "
|
||||
"bruger til at ændre sin adgangskode ved brugerens næste logind."
|
||||
@@ -4504,7 +4504,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:291(term)
|
||||
@@ -4553,7 +4553,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
|
||||
@@ -6892,7 +6892,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -7975,7 +7975,7 @@ msgstr "ændr udløbsinformation om brugeradgangskode"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:92(para)
|
||||
@@ -8057,8 +8057,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -8080,7 +8080,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
|
||||
@@ -8105,7 +8105,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"Kommandoen <command>chage</command> er begrænset til administratorbrugeren "
|
||||
"(root), undtaget for tilvalget <option>-l</option>, som kan bruges af en "
|
||||
|
||||
44
man/po/de.po
44
man/po/de.po
@@ -1092,7 +1092,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1129,7 +1129,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1142,8 +1142,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1153,7 +1153,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1184,7 +1184,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1201,8 +1201,8 @@ msgstr ""
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -3087,7 +3087,7 @@ msgstr "5"
|
||||
#: limits.5.xml:61(refmiscinfo) gshadow.5.xml:48(refmiscinfo)
|
||||
#: faillog.5.xml:59(refmiscinfo)
|
||||
msgid "File Formats and Conversions"
|
||||
msgstr "Dateiformate und -konvertierung"
|
||||
msgstr "Dateiformate und konvertierung"
|
||||
|
||||
#: suauth.5.xml:65(refpurpose)
|
||||
msgid "detailed su control file"
|
||||
@@ -4370,7 +4370,7 @@ msgstr ""
|
||||
|
||||
#: shadow.5.xml:235(para)
|
||||
msgid "An empty field means that the account will never expire."
|
||||
msgstr "Ein leeren Feld bedeutet, dass das Konto nicht verfallen wird."
|
||||
msgstr "Ein leeres Feld bedeutet, dass das Konto nicht verfallen wird."
|
||||
|
||||
#: shadow.5.xml:238(para)
|
||||
msgid ""
|
||||
@@ -5459,7 +5459,7 @@ msgstr "ändert das Passwort eines Benutzers"
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -5475,7 +5475,7 @@ msgstr "Verändern des Passworts"
|
||||
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -5625,7 +5625,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
"Lässt das Passwort eines Kontos sofort verfallen. Im Ergebnis kann damit "
|
||||
"erreicht werden, dass ein Benutzer beim nächsten Login das Passwort ändern "
|
||||
@@ -5709,7 +5709,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"Setzt die Anzahl von Tagen, die mindestens zwischen zwei Änderungen eines "
|
||||
"Passworts vergehen müssen, auf <replaceable>MIN_TAGE</replaceable>. Ein Wert "
|
||||
@@ -5776,7 +5776,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
"Legt die Anzahl der Tage fest, an denen der Benutzer eine Warnung erhält, "
|
||||
@@ -6961,7 +6961,7 @@ msgid ""
|
||||
"contents of this file should be a message indicating why logins are "
|
||||
"inhibited."
|
||||
msgstr ""
|
||||
"Falls angegeben, der Name einer Datei, dessen Existenz Anmeldungen außer von "
|
||||
"Falls angegeben, der Name einer Datei, deren Existenz Anmeldungen außer von "
|
||||
"Root verhindert. Der Inhalt der Datei sollte die Gründe enthalten, weshalb "
|
||||
"Anmeldungen untersagt sind."
|
||||
|
||||
@@ -8773,7 +8773,7 @@ msgstr "-l"
|
||||
# SB: 1. I don't understand "sake"? A typo? But of what? 2. I think we shouldn't have the notorious guest account here as an example.
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -10266,7 +10266,7 @@ msgstr "ändert die Information zum Passwortverfall"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
"Der Befehl <command>chage</command> verändert die Anzahl der Tage zwischen "
|
||||
"dem letzten Wechsel des Passworts und dem nächsten Wechsel. Mit dieser "
|
||||
@@ -10386,8 +10386,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -10419,7 +10419,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
"Legt die Anzahl der Tage fest, an denen der Benutzer eine Warnung erhält, "
|
||||
@@ -10454,7 +10454,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"Der Befehl <command>chage</command> kann nur von Root ausgeführt werden. "
|
||||
"Alle anderen Benutzer können nur die Option <option>-l</option> verwenden, "
|
||||
|
||||
38
man/po/fr.po
38
man/po/fr.po
@@ -1110,7 +1110,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1147,7 +1147,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1160,8 +1160,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1171,7 +1171,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1202,7 +1202,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1219,8 +1219,8 @@ msgstr ""
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -5490,7 +5490,7 @@ msgstr "Modifier le mot de passe d'un utilisateur"
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -5506,7 +5506,7 @@ msgstr "Modifications du mot de passe"
|
||||
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -5656,7 +5656,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
"Annuler immédiatement la validité du mot de passe d'un compte. Ceci permet "
|
||||
"d'obliger un utilisateur à changer son mot de passe lors de sa prochaine "
|
||||
@@ -5744,7 +5744,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"Définir le nombre minimum de jours entre chaque changement de mot de passe à "
|
||||
"<replaceable>MIN_DAYS</replaceable>. Une valeur de zéro pour ce champ "
|
||||
@@ -5812,7 +5812,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
"Configurer le nombre de jours d'avertissement avant que le changement de mot "
|
||||
@@ -8835,7 +8835,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -10319,7 +10319,7 @@ msgstr "Modifier les informations de validité d'un mot de passe"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
"La commande <command>chage</command> modifie le nombre de jours entre les "
|
||||
"changements de mot de passe et la date du dernier changement. Ces "
|
||||
@@ -10438,8 +10438,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -10472,7 +10472,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
"Configurer le nombre de jours d'avertissement avant que le changement de mot "
|
||||
@@ -10507,7 +10507,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"La commande <command>chage</command> est réservée à l'utilisateur root, sauf "
|
||||
"pour l'option <option>-l</option>, qui peut être utilisée par un utilisateur "
|
||||
|
||||
38
man/po/it.po
38
man/po/it.po
@@ -1151,7 +1151,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1189,7 +1189,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1202,8 +1202,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1214,7 +1214,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1247,7 +1247,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1262,8 +1262,8 @@ msgstr "Rimuove tutti gli utenti SELinux assegnati al login utente."
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -5714,7 +5714,7 @@ msgstr "cambia la password utente"
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -5731,7 +5731,7 @@ msgstr "Modifiche delle password"
|
||||
# type: Plain text
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -5892,7 +5892,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
"Fa scadere subito la password dell'utente. Il che ha l'effetto di forzare un "
|
||||
"cambio password al successivo accesso da parte dell'utente."
|
||||
@@ -5978,7 +5978,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"Imposta il numero minimo di giorni tra i cambi di password a "
|
||||
"<replaceable>MIN_GIORNI</replaceable>. Un valore pari a zero indica che "
|
||||
@@ -6050,7 +6050,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
"Imposta il numero di giorni di preavviso prima che sia obbligatorio cambiare "
|
||||
@@ -9144,7 +9144,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -10707,7 +10707,7 @@ msgstr "cambia le informazioni sulla scadenza della password"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
"<command>chage</command> modifica il numero minimo di giorni tra i cambi di "
|
||||
"password e la data dell'ultimo cambio. Queste informazioni sono usate dal "
|
||||
@@ -10832,8 +10832,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -10868,7 +10868,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
"Imposta il numero di giorni di preavviso prima che sia obbligatorio cambiare "
|
||||
@@ -10905,7 +10905,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"L'uso del comando <command>chage</command> è permesso solo all'utente root, "
|
||||
"tranne per l'opzione <option>-l</option>, che può essere usata da un utente "
|
||||
|
||||
38
man/po/pl.po
38
man/po/pl.po
@@ -1088,7 +1088,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>KLUCZ</"
|
||||
@@ -1117,7 +1117,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>KLUCZ</"
|
||||
@@ -1130,8 +1130,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1141,7 +1141,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>KLUCZ</"
|
||||
@@ -1164,7 +1164,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>KLUCZ</"
|
||||
@@ -1177,8 +1177,8 @@ msgstr ""
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -4659,7 +4659,7 @@ msgstr "zmiana hasła użytkownika"
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -4670,7 +4670,7 @@ msgstr ""
|
||||
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -4776,7 +4776,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:220(term)
|
||||
@@ -4845,7 +4845,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"Utawia minimalną liczbę dni pomiędzy zmianami hasła na "
|
||||
"<replaceable>MIN_DAYS</replaceable>. Wartość zerowa oznacza, że użytkownik "
|
||||
@@ -4901,7 +4901,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
|
||||
@@ -7455,7 +7455,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -8833,7 +8833,7 @@ msgstr "zmiana informacji o terminie ważności hasła użytkownika"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
"Polecenie <command>chage</command> zmienia liczbę dni pomiędzy zmianami "
|
||||
"hasła i datę ostatniej zmiany hasła. Informację tę system wykorzystuje do "
|
||||
@@ -8947,8 +8947,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -8980,7 +8980,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
"Ustawia na <replaceable>DNI_OSTRZ</replaceable> liczbę dni przed upływem "
|
||||
@@ -9013,7 +9013,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"Polecenia chage może użyć tylko użytkownik root, za wyjątkiem opcji <option>-"
|
||||
"l</option>. Może się nią posłużyć się użytkownik nieuprzywilejowany do "
|
||||
|
||||
38
man/po/ru.po
38
man/po/ru.po
@@ -1133,7 +1133,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>УЧЁТНАЯ "
|
||||
@@ -1170,7 +1170,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>УЧЁТНАЯ "
|
||||
@@ -1183,8 +1183,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1194,7 +1194,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>УЧЁТНАЯ "
|
||||
@@ -1225,7 +1225,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>УЧЁТНАЯ "
|
||||
@@ -1242,8 +1242,8 @@ msgstr ""
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -5700,7 +5700,7 @@ msgstr "изменяет пароль пользователя"
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -5718,7 +5718,7 @@ msgstr "Изменение пароля"
|
||||
# type: Content of: <refentry><refsect1><refsect2><para>
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -5876,7 +5876,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
"Немедленно сделать пароль устаревшим. В результате это заставит пользователя "
|
||||
"изменить пароль при следующем входе в систему."
|
||||
@@ -5962,7 +5962,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"Задать <replaceable>минимальное количество дней</replaceable> между сменами "
|
||||
"пароля. Нулевое значение этого поля указывает на то, что пользователь может "
|
||||
@@ -6030,7 +6030,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
"Установить число дней выдачи предупреждения, перед тем как потребуется смена "
|
||||
@@ -9182,7 +9182,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -10700,7 +10700,7 @@ msgstr "изменяет информацию об устаревании пар
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
"Программа <command>chage</command> изменяет количество дней между датой "
|
||||
"смены пароля и датой последней смены пароля. Эта информация используется "
|
||||
@@ -10820,8 +10820,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -10854,7 +10854,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
"Установить количество дней выдачи предупреждения, перед тем как потребуется "
|
||||
@@ -10890,7 +10890,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"Программа <command>chage</command> работает только от суперпользователя, за "
|
||||
"исключением вызова с параметром <option>-l</option>, который может "
|
||||
|
||||
@@ -458,7 +458,7 @@ msgid "Note: if you wish to unlock the account (not only access with a password)
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:384(term)
|
||||
msgid "<option>-v</option>, <option>--add-sub-uids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgid "<option>-v</option>, <option>--add-subuids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:388(para)
|
||||
@@ -474,7 +474,7 @@ msgid "No checks will be performed with regard to <option>SUB_UID_MIN</option>,
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:402(term)
|
||||
msgid "<option>-V</option>, <option>--del-sub-uids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgid "<option>-V</option>, <option>--del-subuids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:406(para)
|
||||
@@ -482,11 +482,11 @@ msgid "Remove a range of subordinate uids from the user's account."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid "This option may be specified multiple times to remove multiple ranges to a users account. When both <option>--del-sub-uids</option> and <option>--add-sub-uids</option> are specified, the removal of all subordinate uid ranges happens before any subordinate uid range is added."
|
||||
msgid "This option may be specified multiple times to remove multiple ranges to a users account. When both <option>--del-subuids</option> and <option>--add-subuids</option> are specified, the removal of all subordinate uid ranges happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:422(term)
|
||||
msgid "<option>-w</option>, <option>--add-sub-gids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgid "<option>-w</option>, <option>--add-subgids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:426(para)
|
||||
@@ -498,7 +498,7 @@ msgid "No checks will be performed with regard to <option>SUB_GID_MIN</option>,
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:440(term)
|
||||
msgid "<option>-W</option>, <option>--del-sub-gids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgid "<option>-W</option>, <option>--del-subgids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:444(para)
|
||||
@@ -506,7 +506,7 @@ msgid "Remove a range of subordinate gids from the user's account."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid "This option may be specified multiple times to remove multiple ranges to a users account. When both <option>--del-sub-gids</option> and <option>--add-sub-gids</option> are specified, the removal of all subordinate gid ranges happens before any subordinate gid range is added."
|
||||
msgid "This option may be specified multiple times to remove multiple ranges to a users account. When both <option>--del-subgids</option> and <option>--add-subgids</option> are specified, the removal of all subordinate gid ranges happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:460(term) useradd.8.xml:506(term)
|
||||
@@ -2492,7 +2492,7 @@ msgid "change user password"
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid "The <command>passwd</command> command changes passwords for user accounts. A normal user may only change the password for his/her own account, while the superuser may change the password for any account. <command>passwd</command> also changes the account or associated password validity period."
|
||||
msgid "The <command>passwd</command> command changes passwords for user accounts. A normal user may only change the password for their own account, while the superuser may change the password for any account. <command>passwd</command> also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:98(title)
|
||||
@@ -2500,7 +2500,7 @@ msgid "Password Changes"
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid "The user is first prompted for his/her old password, if one is present. This password is then encrypted and compared against the stored password. The user has only one chance to enter the correct password. The superuser is permitted to bypass this step so that forgotten passwords may be changed."
|
||||
msgid "The user is first prompted for their old password, if one is present. This password is then encrypted and compared against the stored password. The user has only one chance to enter the correct password. The superuser is permitted to bypass this step so that forgotten passwords may be changed."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:107(para)
|
||||
@@ -2572,7 +2572,7 @@ msgid "<option>-e</option>, <option>--expire</option>"
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid "Immediately expire an account's password. This in effect can force a user to change his/her password at the user's next login."
|
||||
msgid "Immediately expire an account's password. This in effect can force a user to change their password at the user's next login."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:220(term)
|
||||
@@ -2612,7 +2612,7 @@ msgid "<option>-n</option>, <option>--mindays</option> <replaceable>MIN_DAY
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:273(para) chage.1.xml:168(para)
|
||||
msgid "Set the minimum number of days between password changes to <replaceable>MIN_DAYS</replaceable>. A value of zero for this field indicates that the user may change his/her password at any time."
|
||||
msgid "Set the minimum number of days between password changes to <replaceable>MIN_DAYS</replaceable>. A value of zero for this field indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:291(term)
|
||||
@@ -2644,7 +2644,7 @@ msgid "<option>-w</option>, <option>--warndays</option> <replaceable>WARN_D
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:348(para)
|
||||
msgid "Set the number of days of warning before a password change is required. The <replaceable>WARN_DAYS</replaceable> option is the number of days prior to the password expiring that a user will be warned that his/her password is about to expire."
|
||||
msgid "Set the number of days of warning before a password change is required. The <replaceable>WARN_DAYS</replaceable> option is the number of days prior to the password expiring that a user will be warned that their password is about to expire."
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:357(term)
|
||||
@@ -4169,7 +4169,7 @@ msgid "-l"
|
||||
msgstr ""
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid "The <command>groupmems</command> command allows a user to administer his/her own group membership list without the requirement of superuser privileges. The <command>groupmems</command> utility is for systems that configure its users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
msgid "The <command>groupmems</command> command allows a user to administer their own group membership list without the requirement of superuser privileges. The <command>groupmems</command> utility is for systems that configure its users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
msgstr ""
|
||||
|
||||
#: groupmems.8.xml:94(para)
|
||||
@@ -4863,7 +4863,7 @@ msgid "change user password expiry information"
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:82(para)
|
||||
msgid "The <command>chage</command> command changes the number of days between password changes and the date of the last password change. This information is used by the system to determine when a user must change his/her password."
|
||||
msgid "The <command>chage</command> command changes the number of days between password changes and the date of the last password change. This information is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:92(para)
|
||||
@@ -4915,7 +4915,7 @@ msgid "<option>-M</option>, <option>--maxdays</option> <replaceable>MAX_DAY
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:180(para)
|
||||
msgid "Set the maximum number of days during which a password is valid. When <replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> is less than the current day, the user will be required to change his/her password before being able to use his/her account. This occurrence can be planned for in advance by use of the <option>-W</option> option, which provides the user with advance warning."
|
||||
msgid "Set the maximum number of days during which a password is valid. When <replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> is less than the current day, the user will be required to change their password before being able to use their account. This occurrence can be planned for in advance by use of the <option>-W</option> option, which provides the user with advance warning."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:189(para)
|
||||
@@ -4927,7 +4927,7 @@ msgid "<option>-W</option>, <option>--warndays</option> <replaceable>WARN_D
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:213(para)
|
||||
msgid "Set the number of days of warning before a password change is required. The <replaceable>WARN_DAYS</replaceable> option is the number of days prior to the password expiring that a user will be warned his/her password is about to expire."
|
||||
msgid "Set the number of days of warning before a password change is required. The <replaceable>WARN_DAYS</replaceable> option is the number of days prior to the password expiring that a user will be warned their password is about to expire."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:222(para)
|
||||
@@ -4939,7 +4939,7 @@ msgid "The <command>chage</command> program requires a shadow password file to b
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:236(para)
|
||||
msgid "The <command>chage</command> command is restricted to the root user, except for the <option>-l</option> option, which may be used by an unprivileged user to determine when his/her password or account is due to expire."
|
||||
msgid "The <command>chage</command> command is restricted to the root user, except for the <option>-l</option> option, which may be used by an unprivileged user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:301(replaceable)
|
||||
|
||||
38
man/po/sv.po
38
man/po/sv.po
@@ -1062,7 +1062,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>NYCKEL</"
|
||||
@@ -1091,7 +1091,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>NYCKEL</"
|
||||
@@ -1104,8 +1104,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1115,7 +1115,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>NYCKEL</"
|
||||
@@ -1138,7 +1138,7 @@ msgstr ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
#| "replaceable>=<replaceable>VALUE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>NYCKEL</"
|
||||
@@ -1151,8 +1151,8 @@ msgstr ""
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -4806,7 +4806,7 @@ msgstr "ändra användarlösenord"
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -4824,7 +4824,7 @@ msgstr "Lösenordsändringar"
|
||||
#: passwd.1.xml:99(para)
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -4969,7 +4969,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr ""
|
||||
"Lösenordet för ett konto sätts omedelbart som utgånget. Detta kan tvinga en "
|
||||
"användare att ändra sitt lösenord vid nästa inloggningsförsök."
|
||||
@@ -5051,7 +5051,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"Sätter minimalt antal dagar mellan lösenordsändringar till "
|
||||
"<replaceable>MIN_DAGAR</replaceable>. Ett nollvärde för detta fält betyder "
|
||||
@@ -5128,7 +5128,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
"Sätter antalet dagar för varning före ett lösenord behöver ändras. Flaggan "
|
||||
@@ -7671,7 +7671,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -9064,7 +9064,7 @@ msgstr "ändra åldringsinformation för användarlösenord"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:92(para)
|
||||
@@ -9156,8 +9156,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -9181,7 +9181,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
|
||||
@@ -9206,7 +9206,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:301(replaceable)
|
||||
|
||||
@@ -1043,7 +1043,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-v</option>, <option>--add-sub-uids</option> "
|
||||
"<option>-v</option>, <option>--add-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1080,7 +1080,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-V</option>, <option>--del-sub-uids</option> "
|
||||
"<option>-V</option>, <option>--del-subuids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1093,8 +1093,8 @@ msgstr ""
|
||||
#: usermod.8.xml:409(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-uids</option> and <option>--add-"
|
||||
"sub-uids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"users account. When both <option>--del-subuids</option> and <option>--add-"
|
||||
"subuids</option> are specified, the removal of all subordinate uid ranges "
|
||||
"happens before any subordinate uid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -1104,7 +1104,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-w</option>, <option>--add-sub-gids</option> "
|
||||
"<option>-w</option>, <option>--add-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1136,7 +1136,7 @@ msgstr ""
|
||||
#| "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
#| "replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgid ""
|
||||
"<option>-W</option>, <option>--del-sub-gids</option> "
|
||||
"<option>-W</option>, <option>--del-subgids</option> "
|
||||
"<replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>"
|
||||
msgstr ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
@@ -1151,8 +1151,8 @@ msgstr "移除用户登录的所有 SELinux 用户映射。"
|
||||
#: usermod.8.xml:447(para)
|
||||
msgid ""
|
||||
"This option may be specified multiple times to remove multiple ranges to a "
|
||||
"users account. When both <option>--del-sub-gids</option> and <option>--add-"
|
||||
"sub-gids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"users account. When both <option>--del-subgids</option> and <option>--add-"
|
||||
"subgids</option> are specified, the removal of all subordinate gid ranges "
|
||||
"happens before any subordinate gid range is added."
|
||||
msgstr ""
|
||||
|
||||
@@ -5037,7 +5037,7 @@ msgstr "更改用户密码"
|
||||
#: passwd.1.xml:89(para)
|
||||
msgid ""
|
||||
"The <command>passwd</command> command changes passwords for user accounts. A "
|
||||
"normal user may only change the password for his/her own account, while the "
|
||||
"normal user may only change the password for their own account, while the "
|
||||
"superuser may change the password for any account. <command>passwd</command> "
|
||||
"also changes the account or associated password validity period."
|
||||
msgstr ""
|
||||
@@ -5051,7 +5051,7 @@ msgstr "密码更改"
|
||||
|
||||
#: passwd.1.xml:99(para)
|
||||
msgid ""
|
||||
"The user is first prompted for his/her old password, if one is present. This "
|
||||
"The user is first prompted for their old password, if one is present. This "
|
||||
"password is then encrypted and compared against the stored password. The "
|
||||
"user has only one chance to enter the correct password. The superuser is "
|
||||
"permitted to bypass this step so that forgotten passwords may be changed."
|
||||
@@ -5181,7 +5181,7 @@ msgstr "<option>-e</option>, <option>--expire</option>"
|
||||
#: passwd.1.xml:207(para)
|
||||
msgid ""
|
||||
"Immediately expire an account's password. This in effect can force a user to "
|
||||
"change his/her password at the user's next login."
|
||||
"change their password at the user's next login."
|
||||
msgstr "让一个账户的密码立即过期。这可以强制一个用户下次登录时更改密码。"
|
||||
|
||||
#: passwd.1.xml:220(term)
|
||||
@@ -5255,7 +5255,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the minimum number of days between password changes to "
|
||||
"<replaceable>MIN_DAYS</replaceable>. A value of zero for this field "
|
||||
"indicates that the user may change his/her password at any time."
|
||||
"indicates that the user may change their password at any time."
|
||||
msgstr ""
|
||||
"在密码更改之间的最小天数设置为 <replaceable>MIN_DAYS</replaceable>。此字段中"
|
||||
"的 0 值表示用户可以在任何时间更改其密码。"
|
||||
@@ -5316,7 +5316,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned that his/her password is "
|
||||
"the password expiring that a user will be warned that their password is "
|
||||
"about to expire."
|
||||
msgstr ""
|
||||
"设置在要求更改密码之前警告的天数。<replaceable>WARN_DAYS</replaceable> 选项是"
|
||||
@@ -7867,7 +7867,7 @@ msgstr "-l"
|
||||
|
||||
#: groupmems.8.xml:86(para)
|
||||
msgid ""
|
||||
"The <command>groupmems</command> command allows a user to administer his/her "
|
||||
"The <command>groupmems</command> command allows a user to administer their "
|
||||
"own group membership list without the requirement of superuser privileges. "
|
||||
"The <command>groupmems</command> utility is for systems that configure its "
|
||||
"users to be in their own name sake primary group (i.e., guest / guest)."
|
||||
@@ -9112,7 +9112,7 @@ msgstr "更改用户密码过期信息"
|
||||
msgid ""
|
||||
"The <command>chage</command> command changes the number of days between "
|
||||
"password changes and the date of the last password change. This information "
|
||||
"is used by the system to determine when a user must change his/her password."
|
||||
"is used by the system to determine when a user must change their password."
|
||||
msgstr ""
|
||||
|
||||
#: chage.1.xml:92(para)
|
||||
@@ -9209,8 +9209,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the maximum number of days during which a password is valid. When "
|
||||
"<replaceable>MAX_DAYS</replaceable> plus <replaceable>LAST_DAY</replaceable> "
|
||||
"is less than the current day, the user will be required to change his/her "
|
||||
"password before being able to use his/her account. This occurrence can be "
|
||||
"is less than the current day, the user will be required to change their "
|
||||
"password before being able to use their account. This occurrence can be "
|
||||
"planned for in advance by use of the <option>-W</option> option, which "
|
||||
"provides the user with advance warning."
|
||||
msgstr ""
|
||||
@@ -9240,7 +9240,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Set the number of days of warning before a password change is required. The "
|
||||
"<replaceable>WARN_DAYS</replaceable> option is the number of days prior to "
|
||||
"the password expiring that a user will be warned his/her password is about "
|
||||
"the password expiring that a user will be warned their password is about "
|
||||
"to expire."
|
||||
msgstr ""
|
||||
"设置在要求更改密码之前几天开始警告。<replaceable>WARN_DAYS</replaceable> 选项"
|
||||
@@ -9267,7 +9267,7 @@ msgstr "<command>chage</command> 需要有一个影子密码文件才可用。"
|
||||
msgid ""
|
||||
"The <command>chage</command> command is restricted to the root user, except "
|
||||
"for the <option>-l</option> option, which may be used by an unprivileged "
|
||||
"user to determine when his/her password or account is due to expire."
|
||||
"user to determine when their password or account is due to expire."
|
||||
msgstr ""
|
||||
"只有 root 才可以使用 <command>chage</command>,一个特殊情况是 <option>-l</"
|
||||
"option> 选项,用来让非特权用户觉得自己的密码或账户何时过期。"
|
||||
|
||||
41
man/su.1.xml
41
man/su.1.xml
@@ -85,12 +85,16 @@
|
||||
<cmdsynopsis>
|
||||
<command>su</command>
|
||||
<arg choice='opt'>
|
||||
<replaceable>options</replaceable>
|
||||
<replaceable>options</replaceable>
|
||||
</arg>
|
||||
<arg choice='opt'>
|
||||
<arg choice='plain'>
|
||||
<replaceable>username</replaceable>
|
||||
</arg>
|
||||
<replaceable>-</replaceable>
|
||||
</arg>
|
||||
<arg choice='opt'>
|
||||
<replaceable>username</replaceable>
|
||||
<arg choice='opt'>
|
||||
<replaceable>args</replaceable>
|
||||
</arg>
|
||||
</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
@@ -98,26 +102,21 @@
|
||||
<refsect1 id='description'>
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
The <command>su</command> command is used to become another user during
|
||||
a login session. Invoked without a <option>username</option>,
|
||||
<command>su</command> defaults to
|
||||
becoming the superuser. The optional argument <option>-</option> may
|
||||
be used to provide an environment similar to what the user would
|
||||
expect had the user logged in directly.
|
||||
The <command>su</command> command is used to become another user during a
|
||||
login session. Invoked without a <option>username</option>,
|
||||
<command>su</command> defaults to becoming the superuser. The
|
||||
<option>-</option> option may be used to provide an environment similar
|
||||
to what the user would expect had the user logged in directly. The
|
||||
<option>-c</option> option may be used to treat the next argument as a
|
||||
command by most shells.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Additional arguments may be provided after the username, in which case
|
||||
they are supplied to the user's login shell. In particular, an
|
||||
argument of <option>-c</option> will cause the next argument to be
|
||||
treated as a command by most command interpreters. The command will be
|
||||
executed by the shell specified in <filename>/etc/passwd</filename>
|
||||
for the target user.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can use the <option>--</option> argument to separate
|
||||
<command>su</command> options from the arguments supplied to the shell.
|
||||
Options are recognized everywhere in the argument list. You can use the
|
||||
<option>--</option> argument to stop option parsing. The
|
||||
<option>-</option> option is special: it is also recognized after
|
||||
<option>--</option>, but has to be placed before
|
||||
<option>username</option>.
|
||||
</para>
|
||||
|
||||
<para>The user will be prompted for a password, if appropriate. Invalid
|
||||
|
||||
@@ -453,6 +453,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-P</option>, <option>--prefix</option> <replaceable>PREFIX_DIR</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Apply changes in the <replaceable>PREFIX_DIR</replaceable>
|
||||
directory and use the configuration files from the
|
||||
<replaceable>PREFIX_DIR</replaceable> directory.
|
||||
This option does not chroot and is intended for preparing
|
||||
a cross-compilation target.
|
||||
Some limitations: NIS and LDAP users/groups are not verified.
|
||||
PAM authentication is using the host files.
|
||||
No SELINUX support.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-s</option>, <option>--shell</option> <replaceable>SHELL</replaceable>
|
||||
|
||||
@@ -154,6 +154,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-P</option>, <option>--prefix</option> <replaceable>PREFIX_DIR</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Apply changes in the <replaceable>PREFIX_DIR</replaceable>
|
||||
directory and use the configuration files from the
|
||||
<replaceable>PREFIX_DIR</replaceable> directory.
|
||||
This option does not chroot and is intended for preparing
|
||||
a cross-compilation target.
|
||||
Some limitations: NIS and LDAP users/groups are not verified.
|
||||
PAM authentication is using the host files.
|
||||
No SELINUX support.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-Z</option>, <option>--selinux-user</option>
|
||||
|
||||
@@ -319,6 +319,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-P</option>, <option>--prefix</option> <replaceable>PREFIX_DIR</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Apply changes in the <replaceable>PREFIX_DIR</replaceable>
|
||||
directory and use the configuration files from the
|
||||
<replaceable>PREFIX_DIR</replaceable> directory.
|
||||
This option does not chroot and is intended for preparing
|
||||
a cross-compilation target.
|
||||
Some limitations: NIS and LDAP users/groups are not verified.
|
||||
PAM authentication is using the host files.
|
||||
No SELINUX support.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-s</option>, <option>--shell</option> <replaceable>SHELL</replaceable>
|
||||
@@ -382,7 +399,7 @@
|
||||
</varlistentry>
|
||||
<varlistentry condition="subids">
|
||||
<term>
|
||||
<option>-v</option>, <option>--add-sub-uids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
<option>-v</option>, <option>--add-subuids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@@ -400,7 +417,7 @@
|
||||
</varlistentry>
|
||||
<varlistentry condition="subids">
|
||||
<term>
|
||||
<option>-V</option>, <option>--del-sub-uids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
<option>-V</option>, <option>--del-subuids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@@ -408,7 +425,7 @@
|
||||
</para>
|
||||
<para>
|
||||
This option may be specified multiple times to remove multiple ranges to a users account.
|
||||
When both <option>--del-sub-uids</option> and <option>--add-sub-uids</option> are specified,
|
||||
When both <option>--del-subuids</option> and <option>--add-subuids</option> are specified,
|
||||
the removal of all subordinate uid ranges happens before any subordinate uid range is added.
|
||||
</para>
|
||||
<para>
|
||||
@@ -420,7 +437,7 @@
|
||||
</varlistentry>
|
||||
<varlistentry condition="subids">
|
||||
<term>
|
||||
<option>-w</option>, <option>--add-sub-gids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
<option>-w</option>, <option>--add-subgids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@@ -438,7 +455,7 @@
|
||||
</varlistentry>
|
||||
<varlistentry condition="subids">
|
||||
<term>
|
||||
<option>-W</option>, <option>--del-sub-gids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
<option>-W</option>, <option>--del-subgids</option> <replaceable>FIRST</replaceable>-<replaceable>LAST</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@@ -446,7 +463,7 @@
|
||||
</para>
|
||||
<para>
|
||||
This option may be specified multiple times to remove multiple ranges to a users account.
|
||||
When both <option>--del-sub-gids</option> and <option>--add-sub-gids</option> are specified,
|
||||
When both <option>--del-subgids</option> and <option>--add-subgids</option> are specified,
|
||||
the removal of all subordinate gid ranges happens before any subordinate gid range is added.
|
||||
</para>
|
||||
<para>
|
||||
|
||||
2
po/bs.po
2
po/bs.po
@@ -2150,7 +2150,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
|
||||
4
po/ca.po
4
po/ca.po
@@ -2423,7 +2423,7 @@ msgstr " -G, --groups GRUPS llista de GRUPS addicionals\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append afegeix l'usuari als GRUPS addicionals\n"
|
||||
" llistats amb la opció -G sense eliminar-los\n"
|
||||
@@ -2968,7 +2968,7 @@ msgstr "%s: no es pot trobar el directori «tcb» per %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
2
po/da.po
2
po/da.po
@@ -2370,7 +2370,7 @@ msgstr " -G, --groups GRUPPER ny liste med supplerende grupper\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append tilføj brugeren til de supplementære "
|
||||
"GRUPPER\n"
|
||||
|
||||
670
po/de.po
670
po/de.po
@@ -1,16 +1,16 @@
|
||||
# shadow de.po
|
||||
# Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
# Frank Schmid <frank@cs-schmid.de>, 2002
|
||||
# Holger Wansing <linux@wansing-online.de>, 2006, 2008, 2009, 2011, 2012.
|
||||
# Holger Wansing <linux@wansing-online.de>, 2006, 2008, 2009, 2011, 2012, 2014.
|
||||
# Patches, suggestions, etc welcome.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: shadow 4.1.4.2\n"
|
||||
"Project-Id-Version: shadow 4.2-2\n"
|
||||
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2012-01-18 21:44+0100\n"
|
||||
"Last-Translator: Holger Wansing <linux@wansing-online.de>\n"
|
||||
"PO-Revision-Date: 2014-07-27 23:06+0200\n"
|
||||
"Last-Translator: Holger Wansing <hwansing@mailbox.org>\n"
|
||||
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -47,10 +47,9 @@ msgstr ""
|
||||
msgid "%s: nscd did not terminate normally (signal %d)\n"
|
||||
msgstr "%s: nscd wurde nicht normal beendet (Signal %d)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
#, c-format
|
||||
msgid "%s: nscd exited with status %d\n"
|
||||
msgstr "%s: nscd wurde mit Status %d beendet"
|
||||
msgstr "%s: nscd wurde mit Status %d beendet\n"
|
||||
|
||||
msgid "Password: "
|
||||
msgstr "Passwort: "
|
||||
@@ -2044,10 +2043,9 @@ msgstr "%s: Neue defaults-Datei kann nicht geöffnet werden.\n"
|
||||
msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: Zeile zu lang in %s: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: Symbolische Verknüpfung %s kann nicht erstellt werden: %s\n"
|
||||
msgstr "%s: Sicherungsdatei kann nicht erstellt werden (%s): %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: rename: %s: %s\n"
|
||||
@@ -2427,7 +2425,7 @@ msgstr " -G, --groups GRUPPEN Neue Liste zusätzlicher GRUPPEN\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append Benutzer zu zusätzlichen Gruppen "
|
||||
"hinzufügen,\n"
|
||||
@@ -2659,9 +2657,9 @@ msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
#| msgid "%s: nscd exited with status %d\n"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: nscd wurde mit Status %d beendet"
|
||||
msgstr "%s: nscd wurde mit Status %d beendet\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s killed by signal %d\n"
|
||||
@@ -2680,7 +2678,7 @@ msgid "failed to allocate memory"
|
||||
msgstr "Speicherreservierung fehlgeschlagen"
|
||||
|
||||
msgid "failed to create backup file"
|
||||
msgstr "Erzeugen der Backup-Datei fehlgeschlagen"
|
||||
msgstr "Erzeugen der Sicherungsdatei fehlgeschlagen"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: can't restore %s: %s (your changes are in %s)\n"
|
||||
@@ -2691,647 +2689,3 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s: failed to find tcb directory for %s\n"
|
||||
msgstr "%s: tcb-Verzeichnis für %s konnte nicht gefunden werden\n"
|
||||
|
||||
#~ msgid " -c, --crypt-method the crypt method (one of %s)\n"
|
||||
#~ msgstr ""
|
||||
#~ " -c, --crypt-method Die Verschlüsselungsmethode (eine der\n"
|
||||
#~ " folgenden: %s)\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: vipw [options]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: vipw [Optionen]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
|
||||
#~ msgid "malloc(%d) failed\n"
|
||||
#~ msgstr "malloc(%d) fehlgeschlagen\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: chage [options] [LOGIN]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -d, --lastday LAST_DAY set date of last password change to "
|
||||
#~ "LAST_DAY\n"
|
||||
#~ " -E, --expiredate EXPIRE_DATE set account expiration date to "
|
||||
#~ "EXPIRE_DATE\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -I, --inactive INACTIVE set password inactive after expiration\n"
|
||||
#~ " to INACTIVE\n"
|
||||
#~ " -l, --list show account aging information\n"
|
||||
#~ " -m, --mindays MIN_DAYS set minimum number of days before "
|
||||
#~ "password\n"
|
||||
#~ " change to MIN_DAYS\n"
|
||||
#~ " -M, --maxdays MAX_DAYS set maximim number of days before "
|
||||
#~ "password\n"
|
||||
#~ " change to MAX_DAYS\n"
|
||||
#~ " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: chage [Optionen] [BENUTZERZUGANG]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -d, --lastday LETZTER_TAG Tag der letzten Passwortänderung auf\n"
|
||||
#~ " LETZTER_TAG setzen\n"
|
||||
#~ " -E, --expiredate ABL_DATUM Ablaufdatum des Benutzerzugangs auf\n"
|
||||
#~ " ABL_DATUM setzen\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -I, --inactive INAKTIV Passwort nach Ablauf von INAKTIV\n"
|
||||
#~ " deaktivieren\n"
|
||||
#~ " -l, --list Informationen zu Ablaufdaten usw. "
|
||||
#~ "anzeigen\n"
|
||||
#~ " -m, --mindays MIN_TAGE Minimale Anzahl der Tage vor\n"
|
||||
#~ " Passwortänderung auf MIN_TAGE setzen\n"
|
||||
#~ " -M, --maxdays MAX_TAGE Maximale Anzahl der Tage vor\n"
|
||||
#~ " Passwortänderung auf MAX_TAGE setzen\n"
|
||||
#~ " -W, --warndays WARN_TAGE Anzahl der Tage für Ablaufwarnung auf\n"
|
||||
#~ " WARN_TAGE setzen\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "%s: PAM authentication failed\n"
|
||||
#~ msgstr "%s: PAM-Authentifizierung fehlgeschlagen\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [-f full_name] [-r room_no] [-w work_ph]\n"
|
||||
#~ "\t[-h home_ph] [-o other] [user]\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: %s [-f vollst_Name] [-r Zimmernummer] [-w Tel_gesch]\n"
|
||||
#~ "\t[-h Tel_privat] [-o sonstiges] [Benutzer]\n"
|
||||
|
||||
#~ msgid "Usage: %s [-f full_name] [-r room_no] [-w work_ph] [-h home_ph]\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: %s [-f vollst_Name] [-r Zimmernummer] [-w Tel_gesch] [-h "
|
||||
#~ "Tel_privat]\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [options]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -c, --crypt-method the crypt method (one of %s)\n"
|
||||
#~ " -e, --encrypted supplied passwords are encrypted\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -m, --md5 encrypt the clear text password using\n"
|
||||
#~ " the MD5 algorithm\n"
|
||||
#~ "%s\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: %s [Optionen]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -c, --crypt-method Verschlüsselungsmethode (eine der\n"
|
||||
#~ " folgenden: %s)\n"
|
||||
#~ " -e, --encrypted Angegebene Passwörter sind verschlüsselt\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -m, --md5 Die Klartext-Passwörter mittels MD5-\n"
|
||||
#~ " Algorithmus verschlüsseln\n"
|
||||
#~ "%s\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: chsh [options] [LOGIN]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -s, --shell SHELL new login shell for the user account\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: chsh [Optionen] [BENUTZERZUGANG]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -s, --shell SHELL Neue Login-Shell für den Benutzerzugang\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "Usage: expiry {-f|-c}\n"
|
||||
#~ msgstr "Aufruf: expiry {-f|-c}\n"
|
||||
|
||||
#~ msgid "faillog: Failed to get the entry for UID %lu\n"
|
||||
#~ msgstr "faillog: Auslesen des Eintrags für UID %lu fehlgeschlagen\n"
|
||||
|
||||
#~ msgid "faillog: Cannot open %s: %s\n"
|
||||
#~ msgstr "faillog: %s kann nicht geöffnet werden: %s\n"
|
||||
|
||||
#~ msgid "faillog: Cannot get the size of %s: %s\n"
|
||||
#~ msgstr "faillog: Auslesen der Größe von %s fehlgeschlagen: %s\n"
|
||||
|
||||
#~ msgid "Usage: groupdel group\n"
|
||||
#~ msgstr "Aufruf: groupdel Gruppe\n"
|
||||
|
||||
#~ msgid "Usage: %s [-r] [-s] [group [gshadow]]\n"
|
||||
#~ msgstr "Aufruf: %s [-r] [-s] [Gruppe [gshadow]]\n"
|
||||
|
||||
#~ msgid "Usage: %s [-r] [-s] [group]\n"
|
||||
#~ msgstr "Aufruf: %s [-r] [-s] [Gruppe]\n"
|
||||
|
||||
#~ msgid "%s: -s and -r are incompatibile\n"
|
||||
#~ msgstr "%s: -s und -r sind nicht kompatibel.\n"
|
||||
|
||||
#~ msgid "Usage: grpconv\n"
|
||||
#~ msgstr "Aufruf: grpconv\n"
|
||||
|
||||
#~ msgid "Usage: grpunconv\n"
|
||||
#~ msgstr "Aufruf: grpunconv\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: lastlog [options]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -b, --before DAYS print only lastlog records older than "
|
||||
#~ "DAYS\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -t, --time DAYS print only lastlog records more recent "
|
||||
#~ "than DAYS\n"
|
||||
#~ " -u, --user LOGIN print lastlog record of the specified "
|
||||
#~ "LOGIN\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: lastlog [Optionen]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -b, --before TAGE Nur lastlog-Aufzeichnungen zeigen, die "
|
||||
#~ "älter\n"
|
||||
#~ " als TAGE sind\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -t, --time TAGE Nur lastlog-Aufzeichnungen zeigen, die "
|
||||
#~ "jünger\n"
|
||||
#~ " als TAGE sind\n"
|
||||
#~ " -u, --user BENUTZERZUGANG lastlog-Eintrag für BENUTZERZUGANG "
|
||||
#~ "anzeigen\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: passwd [options] [LOGIN]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -a, --all report password status on all accounts\n"
|
||||
#~ " -d, --delete delete the password for the named "
|
||||
#~ "account\n"
|
||||
#~ " -e, --expire force expire the password for the named "
|
||||
#~ "account\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -k, --keep-tokens change password only if expired\n"
|
||||
#~ " -i, --inactive INACTIVE set password inactive after expiration\n"
|
||||
#~ " to INACTIVE\n"
|
||||
#~ " -l, --lock lock the password of the named account\n"
|
||||
#~ " -n, --mindays MIN_DAYS set minimum number of days before "
|
||||
#~ "password\n"
|
||||
#~ " change to MIN_DAYS\n"
|
||||
#~ " -q, --quiet quiet mode\n"
|
||||
#~ " -r, --repository REPOSITORY change password in REPOSITORY repository\n"
|
||||
#~ " -S, --status report password status on the named "
|
||||
#~ "account\n"
|
||||
#~ " -u, --unlock unlock the password of the named account\n"
|
||||
#~ " -w, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n"
|
||||
#~ " -x, --maxdays MAX_DAYS set maximum number of days before "
|
||||
#~ "password\n"
|
||||
#~ " change to MAX_DAYS\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: passwd [Optionen] [BENUTZERZUGANG]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -a, --all Passwort-Status für alle Benutzerzugänge\n"
|
||||
#~ " anzeigen\n"
|
||||
#~ " -d, --delete Passwort für den Benutzerzugang löschen\n"
|
||||
#~ " -e, --expire Ablauf des Passworts für den "
|
||||
#~ "Benutzerzugang\n"
|
||||
#~ " erzwingen\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -k, --keep-tokens Passwort nur ändern falls abgelaufen\n"
|
||||
#~ " -i, --inactive INAKTIV Passwort nach Ablauf von INAKTIV\n"
|
||||
#~ " deaktivieren\n"
|
||||
#~ " -l, --lock Benutzerzugang sperren\n"
|
||||
#~ " -n, --mindays MIN_TAGE Minimale Anzahl der Tage vor\n"
|
||||
#~ " Passwortänderung auf MIN_TAGE setzen\n"
|
||||
#~ " -q, --quiet Nicht so geschwätzig verhalten\n"
|
||||
#~ " -r, --repository REPOSITORY Passwort ändern in REPOSITORY\n"
|
||||
#~ " -S, --status Passwort-Status des Benutzerzugangs "
|
||||
#~ "anzeigen\n"
|
||||
#~ " -u, --unlock Benutzerzugang entsperren\n"
|
||||
#~ " -w, --warndays WARN_TAGE Anzahl der Tage für Ablaufwarnung auf\n"
|
||||
#~ " WARN_TAGE setzen\n"
|
||||
#~ " -x, --maxdays MAX_TAGE Maximale Anzahl der Tage vor\n"
|
||||
#~ " Passwortänderung auf MAX_TAGE setzen\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "Usage: %s [-q] [-r] [passwd]\n"
|
||||
#~ msgstr "Aufruf: %s [-q] [-r] [passwort [shadow]]\n"
|
||||
|
||||
#~ msgid "Usage: %s [-q] [-r] [-s] [passwd [shadow]]\n"
|
||||
#~ msgstr "Aufruf: %s [-q] [-r] [-s] [passwort [shadow]]\n"
|
||||
|
||||
#~ msgid "Usage: pwconv\n"
|
||||
#~ msgstr "Aufruf: pwconv\n"
|
||||
|
||||
#~ msgid "Usage: pwunconv\n"
|
||||
#~ msgstr "Aufruf: pwunconv\n"
|
||||
|
||||
#~ msgid "Unknown id: %s\n"
|
||||
#~ msgstr "Unbekannte ID: %s\n"
|
||||
|
||||
#~ msgid "No shell\n"
|
||||
#~ msgstr "Keine Shell\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: userdel [options] LOGIN\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -f, --force force removal of files,\n"
|
||||
#~ " even if not owned by user\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -r, --remove remove home directory and mail spool\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: userdel [Optionen] BENUTZERZUGANG\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -f, --force Entfernen von Dateien erzwingen, auch "
|
||||
#~ "wenn\n"
|
||||
#~ " sie nicht Eigentum des zu löschenden\n"
|
||||
#~ " Benutzers sind\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -r, --remove Entferne Home-Verzeichnis und Mail-Spool\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "%s: user %s is currently logged in\n"
|
||||
#~ msgstr "%s: Benutzer %s ist derzeit angemeldet.\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: usermod [options] LOGIN\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -c, --comment COMMENT new value of the GECOS field\n"
|
||||
#~ " -d, --home HOME_DIR new home directory for the user account\n"
|
||||
#~ " -e, --expiredate EXPIRE_DATE set account expiration date to "
|
||||
#~ "EXPIRE_DATE\n"
|
||||
#~ " -f, --inactive INACTIVE set password inactive after expiration\n"
|
||||
#~ " to INACTIVE\n"
|
||||
#~ " -g, --gid GROUP force use GROUP as new primary group\n"
|
||||
#~ " -G, --groups GROUPS new list of supplementary GROUPS\n"
|
||||
#~ " -a, --append append the user to the supplemental "
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
#~ " -m, --move-home move contents of the home directory to "
|
||||
#~ "the\n"
|
||||
#~ " new location (use only with -d)\n"
|
||||
#~ " -o, --non-unique allow using duplicate (non-unique) UID\n"
|
||||
#~ " -p, --password PASSWORD use encrypted password for the new "
|
||||
#~ "password\n"
|
||||
#~ " -s, --shell SHELL new login shell for the user account\n"
|
||||
#~ " -u, --uid UID new UID for the user account\n"
|
||||
#~ " -U, --unlock unlock the user account\n"
|
||||
#~ "%s\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: usermod [Optionen] BENUTZERZUGANG\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -c, --comment KOMMENTAR Neuer KOMMENTAR im GECOS-Feld\n"
|
||||
#~ " -d, --home HOME_DIR Neues Home-Verzeichnis für den Benutzer-\n"
|
||||
#~ " zugang\n"
|
||||
#~ " -e, --expiredate ABL_DATUM Ablaufdatum auf ABL_DATUM setzen\n"
|
||||
#~ " -f, --inactive INAKTIV Passwort nach Ablauf von INAKTIV\n"
|
||||
#~ " deaktivieren\n"
|
||||
#~ " -g, --gid GRUPPE Erzwinge GRUPPE als neue primäre Gruppe\n"
|
||||
#~ " -G, --groups GRUPPEN Neue Liste zusätzlicher GRUPPEN\n"
|
||||
#~ " -a, --append Benutzer zu zusätzlichen Gruppen "
|
||||
#~ "hinzufügen,\n"
|
||||
#~ " die mit der Option -G angegeben werden, "
|
||||
#~ "ohne\n"
|
||||
#~ " ihn dabei aus anderen Gruppen zu "
|
||||
#~ "entfernen\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -l, --login NEUER_NAME Neuer Wert für den Namen des "
|
||||
#~ "Benutzerzugangs\n"
|
||||
#~ " -L, --lock Den Benutzerzugang sperren\n"
|
||||
#~ " -m, --move-home Den Inhalt des Home-Verzeichnisses an "
|
||||
#~ "den\n"
|
||||
#~ " neuen Ort verschieben (nur mit -d "
|
||||
#~ "benutzen)\n"
|
||||
#~ " -o, --non-unique Benutzung von doppelter (nicht "
|
||||
#~ "einmaliger)\n"
|
||||
#~ " UID erlauben\n"
|
||||
#~ " -p, --password PASSWORD Ein verschlüsseltes Passwort als neues\n"
|
||||
#~ " Passwort verwenden\n"
|
||||
#~ " -s, --shell SHELL Neue Login-Shell des Benutzerzugangs\n"
|
||||
#~ " -u, --uid UID Neue UID des Benutzerzugangs\n"
|
||||
#~ " -U, --unlock Den Benutzerzugang entsperren\n"
|
||||
#~ "%s\n"
|
||||
|
||||
#~ msgid "%s: no flags given\n"
|
||||
#~ msgstr "%s: Keine Optionen angegeben\n"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid ""
|
||||
#~| "Usage: vipw [options]\n"
|
||||
#~| "\n"
|
||||
#~| "Options:\n"
|
||||
#~| " -g, --group edit group database\n"
|
||||
#~| " -h, --help display this help message and exit\n"
|
||||
#~| " -p, --passwd edit passwd database\n"
|
||||
#~| " -q, --quiet quiet mode\n"
|
||||
#~| " -s, --shadow edit shadow or gshadow database\n"
|
||||
#~| "\n"
|
||||
#~ msgid ""
|
||||
#~ "Usage: vipw [options]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -g, --group edit group database\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -p, --passwd edit passwd database\n"
|
||||
#~ " -q, --quiet quiet mode\n"
|
||||
#~ " -s, --shadow edit shadow or gshadow database\n"
|
||||
#~ " -u, --user which user's tcb shadow file to edit\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: vipw [Optionen]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -g, --group Gruppen-Datenbank editieren\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -p, --passwd passwd-Datenbank editieren\n"
|
||||
#~ " -q, --quiet Nicht so geschwätzig verhalten\n"
|
||||
#~ " -s, --shadow shadow- oder gshadow-Datenbank editieren\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [option] GROUP\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -a, --add USER add USER to GROUP\n"
|
||||
#~ " -d, --delete USER remove USER from GROUP\n"
|
||||
#~ " -r, --remove-password remove the GROUP's password\n"
|
||||
#~ " -R, --restrict restrict access to GROUP to its members\n"
|
||||
#~ " -M, --members USER,... set the list of members of GROUP\n"
|
||||
#~ "%s\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: %s [Option] GRUPPE\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -a, --add NUTZER NUTZER zu GRUPPE hinzufügen\n"
|
||||
#~ " -d, --delete NUTZER NUTZER aus GRUPPE entfernen\n"
|
||||
#~ " -r, --remove-password Passwort der GRUPPE entfernen\n"
|
||||
#~ " -R, --restrict Zugriff zu GRUPPE auf ihre Mitglieder\n"
|
||||
#~ " beschränken\n"
|
||||
#~ " -M, --members NUTZER,... Liste der Mitglieder von GRUPPE setzen\n"
|
||||
#~ "%s\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: groupmems [options] [action]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -g, --group groupname change groupname instead of the user's "
|
||||
#~ "group\n"
|
||||
#~ " (root only)\n"
|
||||
#~ "\n"
|
||||
#~ "Actions:\n"
|
||||
#~ " -a, --add username add username to the members of the group\n"
|
||||
#~ " -d, --delete username remove username from the members of the "
|
||||
#~ "group\n"
|
||||
#~ " -p, --purge purge all members from the group\n"
|
||||
#~ " -l, --list list the members of the group\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: groupmems [Optionen] [Aktion]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -g, --group Gruppenname Ändere Gruppenname statt der Gruppe des\n"
|
||||
#~ " Benutzers (nur root)\n"
|
||||
#~ "\n"
|
||||
#~ "Aktionen:\n"
|
||||
#~ " -a, --add Benutzername Benutzername zu den Mitgliedern der "
|
||||
#~ "Gruppe\n"
|
||||
#~ " hinzufügen\n"
|
||||
#~ " -d, --delete Benutzername Benutzername von den Mitgliedern der "
|
||||
#~ "Gruppe\n"
|
||||
#~ " entfernen\n"
|
||||
#~ " -p, --purge Alle Mitglieder aus der Gruppe entfernen\n"
|
||||
#~ " -l, --list Die Mitglieder der Gruppe auflisten\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid "%s: can't create %s\n"
|
||||
#~ msgstr "%s: %s kann nicht erstellt werden\n"
|
||||
|
||||
#~ msgid "%s: can't chown %s\n"
|
||||
#~ msgstr "%s: Besitzer von %s kann nicht geändert werden\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: faillog [options]\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -a, --all display faillog records for all users\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --lock-time SEC after failed login lock account to SEC "
|
||||
#~ "seconds\n"
|
||||
#~ " -m, --maximum MAX set maximum failed login counters to MAX\n"
|
||||
#~ " -r, --reset reset the counters of login failures\n"
|
||||
#~ " -t, --time DAYS display faillog records more recent than "
|
||||
#~ "DAYS\n"
|
||||
#~ " -u, --user LOGIN display faillog record or maintains "
|
||||
#~ "failure\n"
|
||||
#~ " counters and limits (if used with -r, -m "
|
||||
#~ "or -l\n"
|
||||
#~ " options) only for user with LOGIN\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: faillog [Optionen]\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -a, --all Aufzeichnungen fehlgeschlagener "
|
||||
#~ "Anmeldungen\n"
|
||||
#~ " für alle Benutzer anzeigen\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -l, --lock-time SEK Den Benutzerzugang nach fehlgeschlagener\n"
|
||||
#~ " Anmeldung für SEK Sekunden sperren\n"
|
||||
#~ " -m, --maximum MAX Maximal mögliche Anzahl fehlgeschlagener\n"
|
||||
#~ " Anmeldungen auf MAX setzen\n"
|
||||
#~ " -r, --reset Zähler fehlgeschlagener Anmeldungen\n"
|
||||
#~ " zurücksetzen\n"
|
||||
#~ " -t, --time TAGE Aufzeichnungen fehlgeschlagener "
|
||||
#~ "Anmeldungen\n"
|
||||
#~ " anzeigen, die jünger sind als TAGE Tage\n"
|
||||
#~ " -u, --user BENUTZERZUGANG Aufzeichnungen fehlgeschlagener "
|
||||
#~ "Anmeldungen\n"
|
||||
#~ " anzeigen bzw. Verwalten von Zählern und "
|
||||
#~ "Be-\n"
|
||||
#~ " schränkungen (falls mit Optionen -r, -m "
|
||||
#~ "oder -l\n"
|
||||
#~ " aufgerufen) für den BENUTZERZUGANG\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: groupadd [options] GROUP\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -f, --force force exit with success status if the\n"
|
||||
#~ " specified group already exists\n"
|
||||
#~ " -g, --gid GID use GID for the new group\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -K, --key KEY=VALUE overrides /etc/login.defs defaults\n"
|
||||
#~ " -o, --non-unique allow create group with duplicate\n"
|
||||
#~ " (non-unique) GID\n"
|
||||
#~ " -p, --password PASSWORD use encrypted password for the new group\n"
|
||||
#~ " -r, --system create a system account\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: groupadd [Optionen] GRUPPE\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -f, --force Ohne Fehler beenden, falls die GRUPPE\n"
|
||||
#~ " bereits existiert\n"
|
||||
#~ " -g, --gid GID Benutze GID für die neue GRUPPE\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -K, --key SCHLÜSSEL=WERT Die Vorgabewerte in /etc/login.defs\n"
|
||||
#~ " überschreiben\n"
|
||||
#~ " -o, --non-unique Das Erstellen einer GRUPPE mit einer "
|
||||
#~ "nicht\n"
|
||||
#~ " einmaligen (doppelten) GID erlauben\n"
|
||||
#~ " -p, --password PASSWORT Verwende verschlüsseltes Passwort für "
|
||||
#~ "die\n"
|
||||
#~ " neue GRUPPE\n"
|
||||
#~ " -r, --system Erstelle eine Systemgruppe\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: groupmod [options] GROUP\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -g, --gid GID force use new GID by GROUP\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -n, --new-name NEW_GROUP force use NEW_GROUP name by GROUP\n"
|
||||
#~ " -o, --non-unique allow using duplicate (non-unique) GID by "
|
||||
#~ "GROUP\n"
|
||||
#~ " -p, --password PASSWORD use encrypted password for the new "
|
||||
#~ "password\n"
|
||||
#~ "\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: groupmod [Optionen] GRUPPE\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -g, --gid GID Neue GID für die GRUPPE erzwingen\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -n, --new-name NEUE_GRUPPE Neuen Namen NEUE_GRUPPE für die GRUPPE "
|
||||
#~ "erzwingen\n"
|
||||
#~ " -o, --non-unique Verwendung einer doppelten (nicht "
|
||||
#~ "einmaligen)\n"
|
||||
#~ " GID für die GRUPPE erlauben\n"
|
||||
#~ " -p, --password PASSWORT Verwende verschlüsseltes Passwort als \n"
|
||||
#~ " neues Passwort\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: useradd [options] LOGIN\n"
|
||||
#~ "\n"
|
||||
#~ "Options:\n"
|
||||
#~ " -b, --base-dir BASE_DIR base directory for the new user account\n"
|
||||
#~ " home directory\n"
|
||||
#~ " -c, --comment COMMENT set the GECOS field for the new user "
|
||||
#~ "account\n"
|
||||
#~ " -d, --home-dir HOME_DIR home directory for the new user account\n"
|
||||
#~ " -D, --defaults print or save modified default useradd\n"
|
||||
#~ " configuration\n"
|
||||
#~ " -e, --expiredate EXPIRE_DATE set account expiration date to "
|
||||
#~ "EXPIRE_DATE\n"
|
||||
#~ " -f, --inactive INACTIVE set password inactive after expiration\n"
|
||||
#~ " to INACTIVE\n"
|
||||
#~ " -g, --gid GROUP force use GROUP for the new user account\n"
|
||||
#~ " -G, --groups GROUPS list of supplementary groups for the new\n"
|
||||
#~ " user account\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -k, --skel SKEL_DIR specify an alternative skel directory\n"
|
||||
#~ " -K, --key KEY=VALUE overrides /etc/login.defs defaults\n"
|
||||
#~ " -l, --no-log-init do not add the user to the lastlog and\n"
|
||||
#~ " faillog databases\n"
|
||||
#~ " -m, --create-home create home directory for the new user\n"
|
||||
#~ " account\n"
|
||||
#~ " -M, --no-create-home do not create user's home directory\n"
|
||||
#~ " (overrides /etc/login.defs)\n"
|
||||
#~ " -N, --no-user-group do not create a group with the same name "
|
||||
#~ "as\n"
|
||||
#~ " the user\n"
|
||||
#~ " -o, --non-unique allow create user with duplicate\n"
|
||||
#~ " (non-unique) UID\n"
|
||||
#~ " -p, --password PASSWORD use encrypted password for the new user\n"
|
||||
#~ " account\n"
|
||||
#~ " -r, --system create a system account\n"
|
||||
#~ " -s, --shell SHELL the login shell for the new user account\n"
|
||||
#~ " -u, --uid UID force use the UID for the new user "
|
||||
#~ "account\n"
|
||||
#~ " -U, --user-group create a group with the same name as the "
|
||||
#~ "user\n"
|
||||
#~ "%s\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: useradd [Optionen] BENUTZERZUGANG\n"
|
||||
#~ "\n"
|
||||
#~ "Optionen:\n"
|
||||
#~ " -b, --base-dir BASIS_VERZ Basisverzeichnis für das\n"
|
||||
#~ " Home-Verzeichnis des neuen Benutzers\n"
|
||||
#~ " -c, --comment KOMMENTAR Kommentar für das GECOS-Feld des neuen\n"
|
||||
#~ " Benutzers\n"
|
||||
#~ " -d, --home-dir HOME_VERZ Home-Verzeichnis des neuen Benutzers\n"
|
||||
#~ " -D, --defaults Anzeigen oder Speichern der "
|
||||
#~ "modifizierten\n"
|
||||
#~ " Standardkonfiguration für useradd\n"
|
||||
#~ " -e, --expiredate ABL_DATUM Das Ablaufdatum des Benutzerzugangs auf\n"
|
||||
#~ " ABL_DATUM setzen\n"
|
||||
#~ " -f, --inactive INAKTIV Passwort nach Ablauf von INAKTIV "
|
||||
#~ "deaktivieren\n"
|
||||
#~ " -g, --gid GRUPPE Gruppenname GRUPPE für neuen Benutzer "
|
||||
#~ "erzwingen\n"
|
||||
#~ " -G, --groups GRUPPEN Liste der zusätzlichen Gruppen für den\n"
|
||||
#~ " neuen Benutzer\n"
|
||||
#~ " -h, --help Diese Hilfe anzeigen, sonst nichts\n"
|
||||
#~ " -k, --skel SKEL_VERZ Ein alternatives skel-Verzeichnis\n"
|
||||
#~ " (Vorlagenverzeichnis) angeben\n"
|
||||
#~ " -K, --key SCHLÜSSEL=WERT Die Vorgaben in /etc/login.defs "
|
||||
#~ "überschreiben\n"
|
||||
#~ " -l, --no-log-init Den Benutzer nicht zu den lastlog- und "
|
||||
#~ "faillog-\n"
|
||||
#~ " Datenbanken hinzufügen\n"
|
||||
#~ " -m, --create-home Home-Verzeichnis des neuen Benutzers "
|
||||
#~ "erstellen\n"
|
||||
#~ " -M, --no-create-home Kein Home-Verzeichnis für den Benutzer "
|
||||
#~ "erstellen\n"
|
||||
#~ " (überschreibt /etc/login.defs)\n"
|
||||
#~ " -N, --no-user-group Keine Gruppe mit dem gleichen Namen wie "
|
||||
#~ "dem des\n"
|
||||
#~ " Benutzers erstellen\n"
|
||||
#~ " -o, --non-unique Benutzer mit doppelter (nicht "
|
||||
#~ "einmaliger)\n"
|
||||
#~ " UID erlauben\n"
|
||||
#~ " -p, --password PASSWORT Benutze ein verschlüsseltes Passwort für\n"
|
||||
#~ " den neuen Benutzerzugang\n"
|
||||
#~ " -r, --system Erstelle einen Systemzugang\n"
|
||||
#~ " -s, --shell SHELL Die Login-Shell des neuen "
|
||||
#~ "Benutzerzugangs\n"
|
||||
#~ " -u, --uid UID Benutzung dieser UID erzwingen\n"
|
||||
#~ " -U, --user-group Erstelle eine Gruppe mit dem gleichen "
|
||||
#~ "Namen wie\n"
|
||||
#~ " dem des Benutzers\n"
|
||||
#~ "%s\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Usage: %s [options] [input]\n"
|
||||
#~ "\n"
|
||||
#~ " -c, --crypt-method the crypt method (one of %s)\n"
|
||||
#~ " -r, --system create system accounts\n"
|
||||
#~ "%s\n"
|
||||
#~ msgstr ""
|
||||
#~ "Aufruf: %s [Optionen] [Eingabe]\n"
|
||||
#~ "\n"
|
||||
#~ " -c, --crypt-method Die Verschlüsselungsmethode (eine der\n"
|
||||
#~ " folgenden: %s)\n"
|
||||
#~ " -r, --system Erzeuge Systemzugänge\n"
|
||||
#~ "%s\n"
|
||||
|
||||
#~ msgid "Password set to expire."
|
||||
#~ msgstr "Passwort wird ablaufen."
|
||||
|
||||
#~ msgid "setfscreatecon() failed"
|
||||
#~ msgstr "setfscreatecon() fehlgeschlagen"
|
||||
|
||||
4
po/dz.po
4
po/dz.po
@@ -2298,7 +2298,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2831,7 +2831,7 @@ msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/el.po
4
po/el.po
@@ -2444,7 +2444,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append προσθήκη του χρήστη στις συμπληρωματικές "
|
||||
"ΟΜΑΔΕΣ\n"
|
||||
@@ -2981,7 +2981,7 @@ msgstr "%s: αποτυχία εύρεσης καταλόγου tcb %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/es.po
4
po/es.po
@@ -2462,7 +2462,7 @@ msgstr " -G, --groups GRUPOS lista de grupos suplementarios\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -3019,7 +3019,7 @@ msgstr "%s: se produjo un fallo al buscar el directorio tcb de %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/eu.po
4
po/eu.po
@@ -2408,7 +2408,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append gehitu erabiltzailea -G aukerak zehaztutako "
|
||||
"talde\n"
|
||||
@@ -2962,7 +2962,7 @@ msgstr "%s: oinarrizko '%s' direktorio baliogabea\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/fi.po
4
po/fi.po
@@ -2302,7 +2302,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2890,7 +2890,7 @@ msgstr "%s: virheellinen perushakemisto \"%s\"\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/gl.po
4
po/gl.po
@@ -2303,7 +2303,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2837,7 +2837,7 @@ msgstr "%s: directorio base \"%s\" non válido\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
2
po/he.po
2
po/he.po
@@ -2169,7 +2169,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
|
||||
4
po/hu.po
4
po/hu.po
@@ -2297,7 +2297,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2893,7 +2893,7 @@ msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/id.po
4
po/id.po
@@ -2285,7 +2285,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2809,7 +2809,7 @@ msgstr "%s: direktori awal `%s' tak sah\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
6
po/it.po
6
po/it.po
@@ -2487,7 +2487,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -3090,7 +3090,7 @@ msgstr "%s: directory di base «%s» non valida\n"
|
||||
#~| "GROUPS\n"
|
||||
#~| " mentioned by the -G option without "
|
||||
#~| "removing\n"
|
||||
#~| " him/her from other groups\n"
|
||||
#~| " the user from other groups\n"
|
||||
#~| " -h, --help display this help message and exit\n"
|
||||
#~| " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~| " -L, --lock lock the user account\n"
|
||||
@@ -3120,7 +3120,7 @@ msgstr "%s: directory di base «%s» non valida\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/ja.po
4
po/ja.po
@@ -2332,7 +2332,7 @@ msgstr " -G, --groups GROUPS 新たな補助グループのリスト
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append ユーザを (-G で指定された) 補助グループ群\n"
|
||||
" GROUPS に追加する。他のグループからの削除は\n"
|
||||
@@ -2841,7 +2841,7 @@ msgstr "%s: %s の tcb ディレクトリが見付かりませんでした\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
160
po/kk.po
160
po/kk.po
@@ -1,21 +1,22 @@
|
||||
# shadowutils to kazakh.
|
||||
# Copyright (C) 2009 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2009-2012.
|
||||
# Baurzhan Muftakhidinov <baurthefirst@gmail.com>, 2009-2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: shadowutils\n"
|
||||
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2012-01-20 21:16+0600\n"
|
||||
"PO-Revision-Date: 2017-02-07 17:09+0500\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
||||
"Language: kk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -43,10 +44,9 @@ msgstr "баптау қатесі - белгісіз элемент '%s' (адм
|
||||
msgid "%s: nscd did not terminate normally (signal %d)\n"
|
||||
msgstr "%s: nscd өз жұмысын дұрыс аяқтаған жоқ (%d сигналымен)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
#, c-format
|
||||
msgid "%s: nscd exited with status %d\n"
|
||||
msgstr "%s: nscd %d статуспен жұмысын өз аяқтады"
|
||||
msgstr "%s: nscd %d қалып-күймен өз жұмысын аяқтады\n"
|
||||
|
||||
msgid "Password: "
|
||||
msgstr "Пароль: "
|
||||
@@ -417,10 +417,9 @@ msgstr "%s: '%s' chroot жолы қате\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: %s chroot бумасына қатынау мүмкін емес: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: %s chroot бумасына қатынау мүмкін емес: %s\n"
|
||||
msgstr "%s: %s chroot бумасына өту (chdir) мүмкін емес: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
@@ -785,10 +784,9 @@ msgstr "%s: жол %d: жол өте ұзын\n"
|
||||
msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: жол %d: жаңа пароль жоқ\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: %s жазу сәтсіз: %s\n"
|
||||
msgstr "%s: парольді '%s' тұзымен шифрлеу сәтсіз аяқталды: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: line %d: group '%s' does not exist\n"
|
||||
@@ -1096,13 +1094,12 @@ msgstr "%s: GID '%lu' бар болып тұр\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: Тазарту қызметін орнату мүмкін емес.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -r, --reset reset the counters of login failures\n"
|
||||
msgid ""
|
||||
" -f, --force delete group even if it is the primary group "
|
||||
"of a user\n"
|
||||
msgstr " -r, --reset сәтсіз кіру талап санағышын нөлдеу\n"
|
||||
msgstr ""
|
||||
" -f, --force топты өшіру, егер ол пайдаланушының "
|
||||
"біріншілік тобы болса да\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
@@ -1330,25 +1327,19 @@ msgstr ""
|
||||
" -b, --before КҮН мерзімі КҮНнен үлкен ғана lastlog жазбаларын "
|
||||
"көрсету\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -a, --all display faillog records for all users\n"
|
||||
msgid ""
|
||||
" -C, --clear clear lastlog record of an user (usable only "
|
||||
"with -u)\n"
|
||||
msgstr ""
|
||||
" -a, --all барлық пайдаланушылар үшін faillog "
|
||||
"жазбаларын көрсету\n"
|
||||
" -C, --clear пайдаланушының lastlog жазбасын тазарту (тек "
|
||||
"-u опциясымен бірге пайдаланылады)\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -a, --all display faillog records for all users\n"
|
||||
msgid ""
|
||||
" -S, --set set lastlog record to current time (usable "
|
||||
"only with -u)\n"
|
||||
msgstr ""
|
||||
" -a, --all барлық пайдаланушылар үшін faillog "
|
||||
"жазбаларын көрсету\n"
|
||||
" -S, --set lastlog жазбасын ағымдағы уақытқа орнату "
|
||||
"(тек -u опциясымен бірге пайдаланылады)\n"
|
||||
|
||||
msgid ""
|
||||
" -t, --time DAYS print only lastlog records more recent than "
|
||||
@@ -1372,23 +1363,22 @@ msgstr "Пайдаланушы Порт Соңғы"
|
||||
msgid "**Never logged in**"
|
||||
msgstr "**Жүйеге ешқашан кірмеген**"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to get the entry for UID %lu\n"
|
||||
#, c-format
|
||||
msgid "%s: Failed to update the entry for UID %lu\n"
|
||||
msgstr "%s: UID %lu үшін жазбаны алу мүмкін емес\n"
|
||||
msgstr "%s: UID %lu үшін жазбаны жаңарту сәтсіз аяқталды\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: %lu UID-і үшін lastlog жазбасын нөлдеу сәтсіз: %s\n"
|
||||
msgstr "%s: lastlog файлын жаңарту сәтсіз аяқталды\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Option -C cannot be used together with option -S\n"
|
||||
msgstr ""
|
||||
msgstr "%s: -C опциясын -S опциясымен бірге қолдануға болмайды\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Options -C and -S require option -u to specify the user\n"
|
||||
msgstr ""
|
||||
"%s: -C және -S опциялары пайдаланушыны көрсету үшін -u опциясын талап етеді\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Usage: %s [-p] [name]\n"
|
||||
@@ -1513,10 +1503,9 @@ msgstr "Қолданылуы: newgrp [-] [топ]\n"
|
||||
msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Қолданылуы: sg топ [[-c] командасы]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: %s жазу сәтсіз: %s\n"
|
||||
msgstr "%s: парольді алдыңғы тұзбен шифрлеу сәтсіз аяқталды: %s\n"
|
||||
|
||||
msgid "Invalid password.\n"
|
||||
msgstr "пароль қате.\n"
|
||||
@@ -1585,20 +1574,17 @@ msgstr "%s: жол %d: chown %s сәтсіз: %s\n"
|
||||
msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: жол %d: жазбаны жаңарту мүмкін емес\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: жаңа %s '%s' жазбаны дайындау мүмкін емес\n"
|
||||
msgstr "%s: жаңа %s жазбасын дайындау сәтсіз аяқталды\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
#, c-format
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: пайдаланушыны жасау мүмкін емес\n"
|
||||
msgstr "%s: бағынышты пайдаланушы ауқымын табу мүмкін емес\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
#, c-format
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: топты құру мүмкін емес\n"
|
||||
msgstr "%s: бағынышты топ ауқымын табу мүмкін емес\n"
|
||||
|
||||
msgid ""
|
||||
" -a, --all report password status on all accounts\n"
|
||||
@@ -2010,10 +1996,9 @@ msgstr "%s: жаңа defaults файлын ашу мүмкін емес\n"
|
||||
msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: %s ішіндегі жол тым ұзын: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: %s символдық сілтемесін жасау мүмкін емес: %s\n"
|
||||
msgstr "%s: Қор көшірме файлын жасау мүмкін емес (%s): %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: rename: %s: %s\n"
|
||||
@@ -2176,10 +2161,9 @@ msgstr "%s: %lu UID-і үшін faillog жазбасын нөлдеу сәтсі
|
||||
msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: %lu UID-і үшін lastlog жазбасын нөлдеу сәтсіз: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to prepare the new %s entry\n"
|
||||
msgstr "%s: жаңа %s '%s' жазбаны дайындау мүмкін емес\n"
|
||||
msgstr "%s: жаңа %s жазбасын дайындау сәтсіз аяқталды\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot create directory %s\n"
|
||||
@@ -2223,15 +2207,13 @@ msgstr "%s: %s үшін tcb бумасын жасау мүмкін емес\n"
|
||||
msgid "%s: can't create group\n"
|
||||
msgstr "%s: топты құру мүмкін емес\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
#, c-format
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: пайдаланушыны жасау мүмкін емес\n"
|
||||
msgstr "%s: бағынышты пайдаланушы ID-ын жасау мүмкін емес\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
#, c-format
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: топты құру мүмкін емес\n"
|
||||
msgstr "%s: бағынышты топ ID-ын жасау мүмкін емес\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -2277,10 +2259,9 @@ msgstr ""
|
||||
"%s: %s тобын өшіру мүмкін емес, ол басқа пайдаланушы үшін басыңқы топ болып "
|
||||
"табылады.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
#, c-format
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: '%s' жазбасын %s ішінен өшіру мүмкін емес\n"
|
||||
msgstr "%s: %lu жазбасын %s ішінен өшіру мүмкін емес\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
@@ -2365,7 +2346,7 @@ msgstr " -G, --groups ТОПТАР пайдаланушыны қос
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append пайдаланушыны қосымша ТОПТАР ішіне қосу\n"
|
||||
" -G опциясы сияқты, пайдаланушыны басқа "
|
||||
@@ -2407,16 +2388,16 @@ msgstr ""
|
||||
" -U, --unlock пайдаланушы тіркелгісін оқшаулаудан босату\n"
|
||||
|
||||
msgid " -v, --add-subuids FIRST-LAST add range of subordinate uids\n"
|
||||
msgstr ""
|
||||
msgstr " -v, --add-subuids БІРІНШІ-СОҢҒЫ бағынышты uid-тар ауқымын қосу\n"
|
||||
|
||||
msgid " -V, --del-subuids FIRST-LAST remove range of subordinate uids\n"
|
||||
msgstr ""
|
||||
msgstr " -V, --del-subuids БІРІНШІ-СОҢҒЫ бағынышты uid-тар ауқымын өшіру\n"
|
||||
|
||||
msgid " -w, --add-subgids FIRST-LAST add range of subordinate gids\n"
|
||||
msgstr ""
|
||||
msgstr " -w, --add-subgids БІРІНШІ-СОҢҒЫ бағынышты gid-тар ауқымын қосу\n"
|
||||
|
||||
msgid " -W, --del-subgids FIRST-LAST remove range of subordinate gids\n"
|
||||
msgstr ""
|
||||
msgstr " -W, --del-subgids БІРІНШІ-СОҢҒЫ бағынышты gid-тар ауқымын өшіру\n"
|
||||
|
||||
msgid ""
|
||||
" -Z, --selinux-user SEUSER new SELinux user mapping for the user "
|
||||
@@ -2437,15 +2418,13 @@ msgstr ""
|
||||
msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: '%s' пайдаланушысы %s ішінде бар болып тұр\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: '%s' күні қате\n"
|
||||
msgstr "%s: жарамсыз бағынышты uid ауқымы '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: '%s' күні қате\n"
|
||||
msgstr "%s: жарамсыз бағынышты gid ауқымы '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: no options\n"
|
||||
@@ -2463,10 +2442,9 @@ msgstr "%s: -e пен -f үшін көлеңкелі парольдер кере
|
||||
msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: '%lu' UID-і бар болып тұр\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s is not authorized to change the password of %s\n"
|
||||
#, c-format
|
||||
msgid "%s: %s does not exist, you cannot use the flags %s or %s\n"
|
||||
msgstr "%s: %s пайдаланушының %s үшін паролді өзгертуге құқығы жоқ\n"
|
||||
msgstr "%s: %s жоқ болып тұр, %s немесе %s жалаушаларын қолдануға болмайды\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: directory %s exists\n"
|
||||
@@ -2512,25 +2490,21 @@ msgstr "mailbox иесін ауыстыру қатемен аяқталды"
|
||||
msgid "failed to rename mailbox"
|
||||
msgstr "mailbox атын ауыстыру қатемен аяқталды"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to remove uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: жаңа %s '%s' жазбаны дайындау мүмкін емес\n"
|
||||
msgstr "%s: %lu-%lu uid-тар ауқымын '%s' ішінен өшіру сәтсіз аяқталды\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to add uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: жаңа %s '%s' жазбаны дайындау мүмкін емес\n"
|
||||
msgstr "%s: %lu-%lu uid ауқымын '%s' ішіне қосу сәтсіз аяқталды\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to remove gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: жаңа %s '%s' жазбаны дайындау мүмкін емес\n"
|
||||
msgstr "%s: %lu-%lu gid-тар ауқымын '%s' ішінен өшіру сәтсіз аяқталды\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: failed to add gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: жаңа %s '%s' жазбаны дайындау мүмкін емес\n"
|
||||
msgstr "%s: %lu-%lu gid ауқымын '%s' ішіне қосу сәтсіз аяқталды\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -2585,19 +2559,17 @@ msgstr "Файлды оқшаулау мүмкін емес"
|
||||
msgid "Couldn't make backup"
|
||||
msgstr "Қор көшірмені жасау мүмкін емес"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
#, c-format
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
msgstr "%s: %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
#, c-format
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: nscd %d статуспен жұмысын өз аяқтады"
|
||||
msgstr "%s: %s %d қалып-күймен өз жұмысын аяқтады\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s killed by signal %d\n"
|
||||
msgstr ""
|
||||
msgstr "%s: %s %d сигналымен тоқтатылды\n"
|
||||
|
||||
msgid "failed to open scratch file"
|
||||
msgstr "scratch файлын ашу сәтсіз"
|
||||
@@ -2904,7 +2876,7 @@ msgstr "%s: %s үшін tcb бумасын табу сәтсіз\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/km.po
4
po/km.po
@@ -2319,7 +2319,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2845,7 +2845,7 @@ msgstr "%s ៖ ថតមូលដ្ឋានមិនត្រឹ
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
6
po/ko.po
6
po/ko.po
@@ -2352,7 +2352,7 @@ msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2884,7 +2884,7 @@ msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n"
|
||||
#~| "GROUPS\n"
|
||||
#~| " mentioned by the -G option without "
|
||||
#~| "removing\n"
|
||||
#~| " him/her from other groups\n"
|
||||
#~| " the user from other groups\n"
|
||||
#~| " -h, --help display this help message and exit\n"
|
||||
#~| " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~| " -L, --lock lock the user account\n"
|
||||
@@ -2914,7 +2914,7 @@ msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/ne.po
4
po/ne.po
@@ -2298,7 +2298,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2829,7 +2829,7 @@ msgstr "%s: अवैध डाइरेक्ट्री '%s'\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
2
po/nn.po
2
po/nn.po
@@ -2265,7 +2265,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
|
||||
4
po/pl.po
4
po/pl.po
@@ -2305,7 +2305,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2898,7 +2898,7 @@ msgstr "%s: nieprawidłowy katalog bazowy '%s'\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/pt.po
4
po/pt.po
@@ -2408,7 +2408,7 @@ msgstr " -G, --groups GRUPOS nova lista de grupos adicionais\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append juntar o utilizador aos GRUPOS\n"
|
||||
" suplementares mencionados pela opção -G\n"
|
||||
@@ -2954,7 +2954,7 @@ msgstr "%s: falhou encontrar o directório tcb para %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
@@ -2395,7 +2395,7 @@ msgstr " -G, --groups GRUPOS nova lista de GRUPOS suplementares\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append anexa o usuário para os GRUPOS "
|
||||
"suplementares\n"
|
||||
@@ -2932,7 +2932,7 @@ msgstr "%s: falha ao procurar o diretório tcb para %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/ro.po
4
po/ro.po
@@ -2304,7 +2304,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2853,7 +2853,7 @@ msgstr "%s: director de bază nevalid '%s'\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
124
po/ru.po
124
po/ru.po
@@ -5,20 +5,20 @@
|
||||
# Eugene Konev <ejka@imfi.kspu.ru>, 2004.
|
||||
# alyoshin.s@gmail.com <alyoshin.s@gmail.com>, 2008.
|
||||
# Yuri Kozlov <kozlov.y@gmail.com>, 2004, 2005, 2006, 2007, 2008.
|
||||
# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2011, 2012.
|
||||
# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2011, 2012, 2017.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: shadow 4.1.5.1-1\n"
|
||||
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2013-07-29 10:42+0400\n"
|
||||
"PO-Revision-Date: 2017-03-05 11:14+0300\n"
|
||||
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
|
||||
"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 1.0\n"
|
||||
"X-Generator: Lokalize 2.0\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
@@ -436,10 +436,10 @@ msgstr "%s: некорректное значение пути chroot «%s»\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: нет доступа к каталогу chroot %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: нет доступа к каталогу chroot %s: %s\n"
|
||||
msgstr "%s: не удалось выполнить chdir в chroot-каталог %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
@@ -806,10 +806,10 @@ msgstr "%s: строка %d: слишком длинная строка\n"
|
||||
msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: строка %d: отсутствует новый пароль\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: не удалось записать %s: %s\n"
|
||||
msgstr "%s: не удалось зашифровать пароль с солью «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: line %d: group '%s' does not exist\n"
|
||||
@@ -1098,7 +1098,7 @@ msgstr ""
|
||||
" новой группы\n"
|
||||
|
||||
msgid " -r, --system create a system account\n"
|
||||
msgstr " -r, --system создать системную учётную запись\n"
|
||||
msgstr " -r, --system создавать системную группу\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: '%s' is not a valid group name\n"
|
||||
@@ -1124,14 +1124,15 @@ msgstr "%s: GID «%lu» уже существует\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: не удалось настроить службу очистки.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -r, --reset reset the counters of login failures\n"
|
||||
msgid ""
|
||||
" -f, --force delete group even if it is the primary group "
|
||||
"of a user\n"
|
||||
msgstr ""
|
||||
" -r, --reset сбросить счётчик неудачных попыток входа\n"
|
||||
" -f, --force удалить группу, даже если она является"
|
||||
" первичной\n"
|
||||
" группой пользователя\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
@@ -1357,25 +1358,23 @@ msgstr ""
|
||||
" -b, --before ДНЕЙ показать записи lastlog за последние ДНЕЙ "
|
||||
"дней\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -a, --all display faillog records for all users\n"
|
||||
msgid ""
|
||||
" -C, --clear clear lastlog record of an user (usable only "
|
||||
"with -u)\n"
|
||||
msgstr ""
|
||||
" -a, --all показать записи faillog для всех "
|
||||
"пользователей\n"
|
||||
" -C, --clear очистить запись lastlog пользователя\n"
|
||||
" (только вместе с -u)\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -a, --all display faillog records for all users\n"
|
||||
msgid ""
|
||||
" -S, --set set lastlog record to current time (usable "
|
||||
"only with -u)\n"
|
||||
msgstr ""
|
||||
" -a, --all показать записи faillog для всех "
|
||||
"пользователей\n"
|
||||
" -S, --set поставить в записи lastlog текущее время\n"
|
||||
" (только вместе с -u)\n"
|
||||
|
||||
msgid ""
|
||||
" -t, --time DAYS print only lastlog records more recent than "
|
||||
@@ -1399,23 +1398,24 @@ msgstr "Пользователь Порт Последний ра
|
||||
msgid "**Never logged in**"
|
||||
msgstr "**Никогда не входил в систему**"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: Failed to get the entry for UID %lu\n"
|
||||
msgid "%s: Failed to update the entry for UID %lu\n"
|
||||
msgstr "%s: не удалось получить запись для UID %lu\n"
|
||||
msgstr "%s: не удалось обновить запись для UID %lu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: не удалось сбросить запись в lastlog для UID %lu: %s\n"
|
||||
msgstr "%s: не удалось обновить файл lastlog\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Option -C cannot be used together with option -S\n"
|
||||
msgstr ""
|
||||
msgstr "%s: параметр -C нельзя использовать вместе с параметром -S\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Options -C and -S require option -u to specify the user\n"
|
||||
msgstr ""
|
||||
"%s: для параметров -C и -S требуется указать пользователя в параметре -u\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Usage: %s [-p] [name]\n"
|
||||
@@ -1539,10 +1539,10 @@ msgstr "Использование: newgrp [-] [группа]\n"
|
||||
msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Использование: sg группа [[-c] команда]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: не удалось записать %s: %s\n"
|
||||
msgstr "%s: не удалось зашифровать пароль с предыдущей солью: %s\n"
|
||||
|
||||
msgid "Invalid password.\n"
|
||||
msgstr "Неправильный пароль.\n"
|
||||
@@ -1612,20 +1612,20 @@ msgstr "%s: строка %d: вызов chown %s завершился неуда
|
||||
msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: строка %d: не удалось обновить запись\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись «%s»\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: не удалось создать пользователя\n"
|
||||
msgstr "%s: не удалось найти подчинённый диапазон пользователей\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: не удалось создать группу\n"
|
||||
msgstr "%s: не удалось найти подчинённый диапазон групп\n"
|
||||
|
||||
msgid ""
|
||||
" -a, --all report password status on all accounts\n"
|
||||
@@ -2219,10 +2219,10 @@ msgstr "%s: не удалось сбросить запись в faillog для
|
||||
msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: не удалось сбросить запись в lastlog для UID %lu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare the new %s entry\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись «%s»\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot create directory %s\n"
|
||||
@@ -2267,15 +2267,15 @@ msgstr "%s: не удалось создать tcb-каталог для %s\n"
|
||||
msgid "%s: can't create group\n"
|
||||
msgstr "%s: не удалось создать группу\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: не удалось создать пользователя\n"
|
||||
msgstr "%s: не удалось создать подчинённые пользовательские ID\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: не удалось создать группу\n"
|
||||
msgstr "%s: не удалось создать подчинённые групповые ID\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -2325,10 +2325,10 @@ msgstr ""
|
||||
"%s: группа %s является первичной для другого пользователя и не может быть "
|
||||
"удалена.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: не удалось удалить запись «%s» из %s\n"
|
||||
msgstr "%s: не удалось удалить запись %lu из %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
@@ -2413,7 +2413,7 @@ msgstr " -G, --groups ГРУППЫ список дополнител
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append добавить пользователя в дополнительные\n"
|
||||
" ГРУППЫ, указанные в параметре -G не удаляя\n"
|
||||
@@ -2452,16 +2452,16 @@ msgid " -U, --unlock unlock the user account\n"
|
||||
msgstr " -U, --unlock разблокировать учётную запись\n"
|
||||
|
||||
msgid " -v, --add-subuids FIRST-LAST add range of subordinate uids\n"
|
||||
msgstr ""
|
||||
msgstr " -v, --add-subuids ПЕРВ-ПОСЛ добавить диапазон подчинённых uid\n"
|
||||
|
||||
msgid " -V, --del-subuids FIRST-LAST remove range of subordinate uids\n"
|
||||
msgstr ""
|
||||
msgstr " -V, --del-subuids ПЕРВ-ПОСЛ удалить диапазон подчинённых uid\n"
|
||||
|
||||
msgid " -w, --add-subgids FIRST-LAST add range of subordinate gids\n"
|
||||
msgstr ""
|
||||
msgstr " -w, --add-subgids ПЕРВ-ПОСЛ добавить диапазон подчинённых gid\n"
|
||||
|
||||
msgid " -W, --del-subgids FIRST-LAST remove range of subordinate gids\n"
|
||||
msgstr ""
|
||||
msgstr " -W, --del-subgids ПЕРВ-ПОСЛ удалить диапазон подчинённых gid\n"
|
||||
|
||||
msgid ""
|
||||
" -Z, --selinux-user SEUSER new SELinux user mapping for the user "
|
||||
@@ -2483,15 +2483,15 @@ msgstr ""
|
||||
msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: пользователь «%s» уже существует в %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: неверная дата «%s»\n"
|
||||
msgstr "%s: некорректный диапазон подчинённых uid «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: неверная дата «%s»\n"
|
||||
msgstr "%s: некорректный диапазон подчинённых gid «%s»\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: no options\n"
|
||||
@@ -2510,10 +2510,10 @@ msgstr ""
|
||||
msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: UID «%lu» уже существует\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: %s is not authorized to change the password of %s\n"
|
||||
msgid "%s: %s does not exist, you cannot use the flags %s or %s\n"
|
||||
msgstr "%s: у %s нет прав изменять пароль %s\n"
|
||||
msgstr "%s: %s не существует, нельзя указывать флаги %s или %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: directory %s exists\n"
|
||||
@@ -2562,25 +2562,25 @@ msgstr "не удалось сменить владельца почтового
|
||||
msgid "failed to rename mailbox"
|
||||
msgstr "не удалось переименовать почтовый ящик"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to remove uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись «%s»\n"
|
||||
msgstr "%s: не удалось удалить диапазон uid %lu-%lu из «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to add uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись «%s»\n"
|
||||
msgstr "%s: не удалось добавить диапазон uid %lu-%lu в «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to remove gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись «%s»\n"
|
||||
msgstr "%s: не удалось удалить диапазон gid %lu-%lu из «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to add gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: не удалось подготовить новую %s запись «%s»\n"
|
||||
msgstr "%s: не удалось добавить диапазон gid %lu-%lu в «%s»\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -2638,19 +2638,19 @@ msgstr "Не удалось заблокировать файл"
|
||||
msgid "Couldn't make backup"
|
||||
msgstr "Не удалось создать резервную копию"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
msgstr "%s: %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
#| msgid "%s: nscd exited with status %d\n"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: nscd завершился с кодом выхода %d\n"
|
||||
msgstr "%s: %s завершился с кодом выхода %d\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s killed by signal %d\n"
|
||||
msgstr ""
|
||||
msgstr "%s: %s убит по сигналу %d\n"
|
||||
|
||||
msgid "failed to open scratch file"
|
||||
msgstr "не удалось открыть черновой файл"
|
||||
@@ -2960,7 +2960,7 @@ msgstr "%s: не удалось найти каталог tcb для %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
@@ -480,7 +480,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" -M, --maxdays MAX_DAYS set maximim number of days before password\n"
|
||||
" -M, --maxdays MAX_DAYS set maximum number of days before password\n"
|
||||
" change to MAX_DAYS\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -2123,7 +2123,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
|
||||
6
po/sk.po
6
po/sk.po
@@ -2363,7 +2363,7 @@ msgstr " -G, --groups SKUPINY zobrazí prídavné skupiny\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2941,7 +2941,7 @@ msgstr "%s: chybný základný adresár „%s“\n"
|
||||
#~| "GROUPS\n"
|
||||
#~| " mentioned by the -G option without "
|
||||
#~| "removing\n"
|
||||
#~| " him/her from other groups\n"
|
||||
#~| " the user from other groups\n"
|
||||
#~| " -h, --help display this help message and exit\n"
|
||||
#~| " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~| " -L, --lock lock the user account\n"
|
||||
@@ -2971,7 +2971,7 @@ msgstr "%s: chybný základný adresár „%s“\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
2
po/sq.po
2
po/sq.po
@@ -2130,7 +2130,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
|
||||
4
po/sv.po
4
po/sv.po
@@ -2376,7 +2376,7 @@ msgstr " -G, --groups GRUPPER ny lista över ytterligare GRUPPER\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append lägg till användaren till ytterligare "
|
||||
"GRUPPER\n"
|
||||
@@ -2911,7 +2911,7 @@ msgstr "%s: misslyckades med att hitta tcb-katalog för %s\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/tl.po
4
po/tl.po
@@ -2311,7 +2311,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2872,7 +2872,7 @@ msgstr "%s: hindi tanggap na batayang directory '%s'\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
6
po/tr.po
6
po/tr.po
@@ -2466,7 +2466,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -3089,7 +3089,7 @@ msgstr "%s: geçersiz ana dizin '%s'\n"
|
||||
#~| "GROUPS\n"
|
||||
#~| " mentioned by the -G option without "
|
||||
#~| "removing\n"
|
||||
#~| " him/her from other groups\n"
|
||||
#~| " the user from other groups\n"
|
||||
#~| " -h, --help display this help message and exit\n"
|
||||
#~| " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~| " -L, --lock lock the user account\n"
|
||||
@@ -3119,7 +3119,7 @@ msgstr "%s: geçersiz ana dizin '%s'\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
4
po/uk.po
4
po/uk.po
@@ -2301,7 +2301,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
@@ -2894,7 +2894,7 @@ msgstr "%s: невірна базова тека \"%s\"\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
@@ -2244,7 +2244,7 @@ msgstr " -G, --groups GROUPS 新的附加组列表 GROUPS\n"
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
" -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,\n"
|
||||
" 并不从其它组中删除此用户\n"
|
||||
@@ -2735,7 +2735,7 @@ msgstr "%s:无法为“%s”找到 tcb 目录\n"
|
||||
#~ "GROUPS\n"
|
||||
#~ " mentioned by the -G option without "
|
||||
#~ "removing\n"
|
||||
#~ " him/her from other groups\n"
|
||||
#~ " the user from other groups\n"
|
||||
#~ " -h, --help display this help message and exit\n"
|
||||
#~ " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
#~ " -L, --lock lock the user account\n"
|
||||
|
||||
@@ -18,7 +18,6 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Poedit-Language: Chinese\n"
|
||||
"X-Poedit-Country: TAIWAN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
@@ -2262,7 +2261,7 @@ msgstr ""
|
||||
msgid ""
|
||||
" -a, --append append the user to the supplemental GROUPS\n"
|
||||
" mentioned by the -G option without removing\n"
|
||||
" him/her from other groups\n"
|
||||
" the user from other groups\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -l, --login NEW_LOGIN new value of the login name\n"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user