Compare commits
329 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
81de782d1e | ||
|
|
d83eccdded | ||
|
|
681b66b13c | ||
|
|
2958bd050b | ||
|
|
38f493aff2 | ||
|
|
19bac44dde | ||
|
|
b49712ed32 | ||
|
|
cdbe1310cc | ||
|
|
b462f5335f | ||
|
|
115a4e89e2 | ||
|
|
9d935d9be1 | ||
|
|
7eca1112fb | ||
|
|
fe2a266c50 | ||
|
|
e97df9b1ec | ||
|
|
d048459d36 | ||
|
|
88fa0651bf | ||
|
|
4e038f3ae7 | ||
|
|
6c6c8d3a33 | ||
|
|
a8a921184f | ||
|
|
cbd2472b7c | ||
|
|
a0efca4581 | ||
|
|
4e1da34601 | ||
|
|
b03df41906 | ||
|
|
8ca6eea938 | ||
|
|
1c2ad5e6b9 | ||
|
|
991fee82df | ||
|
|
b52ce71c27 | ||
|
|
e78d22469f | ||
|
|
c4e8b411d4 | ||
|
|
3a51b90145 | ||
|
|
a2cd3e9ef0 | ||
|
|
1cbb562c23 | ||
|
|
558977bb2b | ||
|
|
332709da65 | ||
|
|
a74587a4ea | ||
|
|
1e13749483 | ||
|
|
1a1b8fcc36 | ||
|
|
23262b249c | ||
|
|
5687be5f31 | ||
|
|
e293aa9cfc | ||
|
|
edf7547ad5 | ||
|
|
2cac079ef4 | ||
|
|
5afc1c5b5f | ||
|
|
3025fefc41 | ||
|
|
00a5cff244 | ||
|
|
fc0ed79e5d | ||
|
|
13c618465d | ||
|
|
3c52a84ff8 | ||
|
|
2bb99b8fe6 | ||
|
|
d2808b1b51 | ||
|
|
b679cdbd3e | ||
|
|
a5f034f272 | ||
|
|
82fa6eccf9 | ||
|
|
8d39357c84 | ||
|
|
aff40d8515 | ||
|
|
51cfc1f89a | ||
|
|
816220f90c | ||
|
|
50b23584d7 | ||
|
|
c1d36a8acb | ||
|
|
caefe9e8de | ||
|
|
64d7688acb | ||
|
|
408b8a5482 | ||
|
|
ce2941ca0d | ||
|
|
47797ca665 | ||
|
|
1697c192ac | ||
|
|
5837240451 | ||
|
|
2c8171f8c8 | ||
|
|
fbb59823c5 | ||
|
|
fe87a1ad96 | ||
|
|
38e3e35c72 | ||
|
|
a8f7132113 | ||
|
|
3d921155e0 | ||
|
|
fe34a2a0e4 | ||
|
|
e24deea4c9 | ||
|
|
d6276066dd | ||
|
|
d2e1e9ce85 | ||
|
|
e61db2c618 | ||
|
|
c40c49536e | ||
|
|
dd2033c40c | ||
|
|
d66a1fe069 | ||
|
|
beb75c6fd6 | ||
|
|
c0c2b99164 | ||
|
|
ebad423023 | ||
|
|
c5898d9f02 | ||
|
|
ee87cda65d | ||
|
|
5b41b7d1b1 | ||
|
|
4633164857 | ||
|
|
59c2dabb26 | ||
|
|
42324e5017 | ||
|
|
52c081b02c | ||
|
|
bb3f810611 | ||
|
|
d5255da20b | ||
|
|
70971457b7 | ||
|
|
ff8b1ebafa | ||
|
|
83f1380600 | ||
|
|
1ecca8439d | ||
|
|
58ee899dce | ||
|
|
10e388efc2 | ||
|
|
fb97da1ce1 | ||
|
|
4aaf05d72e | ||
|
|
6bf2d74dfc | ||
|
|
4be18d3299 | ||
|
|
0d725c1e60 | ||
|
|
3c69af9ed3 | ||
|
|
89b96cb85c | ||
|
|
99dbd4b9ee | ||
|
|
67ec1a5266 | ||
|
|
2fd5815546 | ||
|
|
cba31b52b3 | ||
|
|
eadcb472e1 | ||
|
|
b3b6d9d77c | ||
|
|
48dcf7852e | ||
|
|
73a876a056 | ||
|
|
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
|
||||
158
ChangeLog
158
ChangeLog
@@ -1,3 +1,161 @@
|
||||
2019-12-01 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Release 4.8
|
||||
* Initial optional bcrypt support.
|
||||
* Make build/install of 'su' optional.
|
||||
* Fix for vipw not resuming correctly when suspended
|
||||
* Sync password field descriptions in manpages
|
||||
* Check for valid shell argument in useradd
|
||||
* Allow translation of new strings through POTFILES.in
|
||||
* Migrate to itstool for translations
|
||||
* Migrate to new SELinux api
|
||||
* Support --enable-vendordir
|
||||
* pwck: Only check homedir if set and not a system user
|
||||
* Support nonstandard usernames
|
||||
* sget{pw,gr}ent: check for data at EOL
|
||||
* Add YYY-MM-DD support in chage
|
||||
* Fix failing chmod calls for suidubins
|
||||
* Fix --sbindir and --bindir for binary installations
|
||||
* Fix LASTLOG_UID_MAX in login.defs
|
||||
* Fix configure error with dash
|
||||
|
||||
2019-06-13 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Release 4.7
|
||||
* Spawn: don't loop forever on ECHILD
|
||||
* Do not fail locking if there is a stale lockfile Tomas Mraz)
|
||||
* Use lckpwdf if prefix not set (Tomas Mraz)
|
||||
* Build: check correct DocBook version (Jan Tojnar)
|
||||
* Usermod: Print 'no changes' to stdout, not stderr (Serge Hallyn)
|
||||
* Add support for btrfs subvolumes for home (Adam Majer)
|
||||
* Fix chpasswd long line handling (Nathan Ruiz)
|
||||
* Use secure_getenv for gettime (Chris Lamb)
|
||||
* Make sp_lstchg reproducible (Chris Lamb)
|
||||
* Do not crash commonio_close if db file is not open (Tomas Mraz)
|
||||
* Don't flush nscd and sssd cache in read-only mode (Charlie Vuillemez)
|
||||
* French manpage update (Alban VIDAL)
|
||||
* Fix manpage defaults for SUB_UID/GID_COUNT (Tomas Mraz)
|
||||
* Sync po files from shadow.pot (Alban VIDAL)
|
||||
* Usermod: guard against unsafe chown of homedir contents (Tomas Mraz)
|
||||
* Add LASTLOG_UID_MAX to login.defs (Tomas Mraz)
|
||||
* new[ug]idmap file capabilities support (Giuseppe Scrivano and Christian Brauner)
|
||||
* Fix segfault in useradd (Tomas Mraz)
|
||||
* Coverity issues (Tomas Mraz)
|
||||
* Flush sssd caches (Jakub Hrozek)
|
||||
* Log UID in nologin (Vladimir Ivanov)
|
||||
* run pam_getenvlist after setup_env in su.c (Michael Vogt)
|
||||
* Support systems with only utmpx (A. Wilcox)
|
||||
* Fix unguarded ENABLE_SUBIDS code (Jan Chren (rindeal))
|
||||
* Update po/zh_CN translation (Lion Yang)
|
||||
* Create parent dirs for useradd -m (Michael Vetter)
|
||||
* Prevent usermod segv
|
||||
* Fix usermod crash (fariouche)
|
||||
|
||||
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>).
|
||||
|
||||
|
||||
22
README
22
README
@@ -2,18 +2,13 @@ Shadow SITES
|
||||
============
|
||||
|
||||
Homepage
|
||||
http://pkg-shadow.alioth.debian.org/
|
||||
http://github.com/shadow-maint/shadow
|
||||
|
||||
FTP site
|
||||
ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow
|
||||
Issue tracker
|
||||
http://github.com/shadow-maint/shadow/issues
|
||||
|
||||
SVN repository
|
||||
anonymous read only access: svn://svn.debian.org/pkg-shadow/upstream
|
||||
|
||||
SVN web interface
|
||||
http://svn.debian.org/wsvn/pkg-shadow/upstream
|
||||
or
|
||||
http://svn.debian.org/viewsvn/pkg-shadow/upstream
|
||||
Releases
|
||||
https://github.com/shadow-maint/shadow/releases
|
||||
|
||||
Mailing lists
|
||||
for general discuss: pkg-shadow-devel@lists.alioth.debian.org
|
||||
@@ -44,6 +39,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>
|
||||
@@ -55,6 +51,7 @@ Brian R. Gaeke <brg@dgate.org>
|
||||
Calle Karlsson <ckn@kash.se>
|
||||
Chip Rosenthal <chip@unicom.com>
|
||||
Chris Evans <lady0110@sable.ox.ac.uk>
|
||||
Chris Lamb <chris@chris-lamb.co.uk>
|
||||
Cristian Gafton <gafton@sorosis.ro>
|
||||
Dan Walsh <dwalsh@redhat.com>
|
||||
Darcy Boese <possum@chardonnay.niagara.com>
|
||||
@@ -62,6 +59,7 @@ Dave Hagewood <admin@arrowweb.com>
|
||||
David A. Holland <dholland@hcs.harvard.edu>
|
||||
David Frey <David.Frey@lugs.ch>
|
||||
Ed Carp <ecarp@netcom.com>
|
||||
Eric W. Biederman" <ebiederm@xmission.com>
|
||||
Floody <flood@evcom.net>
|
||||
Frank Denis <j@4u.net>
|
||||
George Kraft IV <gk4@us.ibm.com>
|
||||
@@ -117,5 +115,7 @@ 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)
|
||||
Christian Brauner <christian@brauner.io> (2019-now)
|
||||
|
||||
|
||||
98
configure.ac
98
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.8], [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...
|
||||
@@ -31,7 +34,7 @@ AC_HEADER_STDBOOL
|
||||
|
||||
AC_CHECK_HEADERS(errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \
|
||||
utmpx.h termios.h termio.h sgtty.h sys/ioctl.h syslog.h paths.h \
|
||||
utime.h ulimit.h sys/resource.h gshadow.h lastlog.h \
|
||||
utime.h ulimit.h sys/capability.h sys/resource.h gshadow.h lastlog.h \
|
||||
locale.h rpc/key_prot.h netdb.h acl/libacl.h attr/libattr.h \
|
||||
attr/error_context.h)
|
||||
|
||||
@@ -71,12 +74,6 @@ AC_CHECK_MEMBERS([struct utmp.ut_type,
|
||||
struct utmp.ut_time,
|
||||
struct utmp.ut_xtime,
|
||||
struct utmp.ut_tv],,,[[#include <utmp.h>]])
|
||||
dnl There are dependencies:
|
||||
dnl If UTMPX has to be used, the utmp structure shall have a ut_id field.
|
||||
if test "$ac_cv_header_utmpx_h" = "yes" &&
|
||||
test "$ac_cv_member_struct_utmp_ut_id" != "yes"; then
|
||||
AC_MSG_ERROR(Systems with UTMPX and no ut_id field in the utmp structure are not supported)
|
||||
fi
|
||||
|
||||
AC_CHECK_MEMBERS([struct utmpx.ut_name,
|
||||
struct utmpx.ut_host,
|
||||
@@ -113,6 +110,9 @@ AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent)
|
||||
AC_REPLACE_FUNCS(snprintf strcasecmp strdup strerror strstr)
|
||||
|
||||
AC_CHECK_FUNC(setpgrp)
|
||||
AC_CHECK_FUNC(secure_getenv, [AC_DEFINE(HAS_SECURE_GETENV,
|
||||
1,
|
||||
[Defined to 1 if you have the declaration of 'secure_getenv'])])
|
||||
|
||||
if test "$ac_cv_header_shadow_h" = "yes"; then
|
||||
AC_CACHE_CHECK(for working shadow group support,
|
||||
@@ -247,12 +247,15 @@ AC_ARG_ENABLE(subordinate-ids,
|
||||
[enable_subids="maybe"]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(audit,
|
||||
AC_ARG_WITH(audit,
|
||||
[AC_HELP_STRING([--with-audit], [use auditing support @<:@default=yes if found@:>@])],
|
||||
[with_audit=$withval], [with_audit=maybe])
|
||||
AC_ARG_WITH(libpam,
|
||||
[AC_HELP_STRING([--with-libpam], [use libpam for PAM support @<:@default=yes if found@:>@])],
|
||||
[with_libpam=$withval], [with_libpam=maybe])
|
||||
AC_ARG_WITH(btrfs,
|
||||
[AC_HELP_STRING([--with-btrfs], [add BtrFS support @<:@default=yes if found@:>@])],
|
||||
[with_btrfs=$withval], [with_btrfs=maybe])
|
||||
AC_ARG_WITH(selinux,
|
||||
[AC_HELP_STRING([--with-selinux], [use SELinux support @<:@default=yes if found@:>@])],
|
||||
[with_selinux=$withval], [with_selinux=maybe])
|
||||
@@ -274,12 +277,21 @@ AC_ARG_WITH(libcrack,
|
||||
AC_ARG_WITH(sha-crypt,
|
||||
[AC_HELP_STRING([--with-sha-crypt], [allow the SHA256 and SHA512 password encryption algorithms @<:@default=yes@:>@])],
|
||||
[with_sha_crypt=$withval], [with_sha_crypt=yes])
|
||||
AC_ARG_WITH(bcrypt,
|
||||
[AC_HELP_STRING([--with-bcrypt], [allow the bcrypt password encryption algorithm @<:@default=no@:>@])],
|
||||
[with_bcrypt=$withval], [with_bcrypt=no])
|
||||
AC_ARG_WITH(nscd,
|
||||
[AC_HELP_STRING([--with-nscd], [enable support for nscd @<:@default=yes@:>@])],
|
||||
[with_nscd=$withval], [with_nscd=yes])
|
||||
AC_ARG_WITH(sssd,
|
||||
[AC_HELP_STRING([--with-sssd], [enable support for flushing sssd caches @<:@default=yes@:>@])],
|
||||
[with_sssd=$withval], [with_sssd=yes])
|
||||
AC_ARG_WITH(group-name-max-length,
|
||||
[AC_HELP_STRING([--with-group-name-max-length], [set max group name length @<:@default=16@:>@])],
|
||||
[with_group_name_max_length=$withval], [with_group_name_max_length=yes])
|
||||
AC_ARG_WITH(su,
|
||||
[AC_HELP_STRING([--with-su], [build and install su program and man page @<:@default=yes@:>@])],
|
||||
[with_su=$withval], [with_su=yes])
|
||||
|
||||
if test "$with_group_name_max_length" = "no" ; then
|
||||
with_group_name_max_length=0
|
||||
@@ -295,12 +307,26 @@ if test "$with_sha_crypt" = "yes"; then
|
||||
AC_DEFINE(USE_SHA_CRYPT, 1, [Define to allow the SHA256 and SHA512 password encryption algorithms])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(USE_BCRYPT, test "x$with_bcrypt" = "xyes")
|
||||
if test "$with_bcrypt" = "yes"; then
|
||||
AC_DEFINE(USE_BCRYPT, 1, [Define to allow the bcrypt password encryption algorithm])
|
||||
fi
|
||||
|
||||
if test "$with_nscd" = "yes"; then
|
||||
AC_CHECK_FUNC(posix_spawn,
|
||||
[AC_DEFINE(USE_NSCD, 1, [Define to support flushing of nscd caches])],
|
||||
[AC_MSG_ERROR([posix_spawn is needed for nscd support])])
|
||||
fi
|
||||
|
||||
if test "$with_sssd" = "yes"; then
|
||||
AC_CHECK_FUNC(posix_spawn,
|
||||
[AC_DEFINE(USE_SSSD, 1, [Define to support flushing of sssd caches])],
|
||||
[AC_MSG_ERROR([posix_spawn is needed for sssd support])])
|
||||
fi
|
||||
|
||||
AS_IF([test "$with_su" != "no"], AC_DEFINE(WITH_SU, 1, [Build with su])])
|
||||
AM_CONDITIONAL([WITH_SU], [test "x$with_su" != "xno"])
|
||||
|
||||
dnl Check for some functions in libc first, only if not found check for
|
||||
dnl other libraries. This should prevent linking libnsl if not really
|
||||
dnl needed (Linux glibc, Irix), but still link it if needed (Solaris).
|
||||
@@ -309,6 +335,17 @@ AC_SEARCH_LIBS(inet_ntoa, inet)
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
|
||||
AC_CHECK_LIB([econf],[econf_readDirs],[LIBECONF="-leconf"],[LIBECONF=""])
|
||||
if test -n "$LIBECONF"; then
|
||||
ECONF_CPPFLAGS="-DUSE_ECONF=1"
|
||||
AC_ARG_ENABLE([vendordir],
|
||||
AS_HELP_STRING([--enable-vendordir=DIR], [Directory for distribution provided configuration files]),,[])
|
||||
fi
|
||||
AC_SUBST(ECONF_CPPFLAGS)
|
||||
AC_SUBST(LIBECONF)
|
||||
AC_SUBST([VENDORDIR], [$enable_vendordir])
|
||||
AM_CONDITIONAL([HAVE_VENDORDIR], [test "x$enable_vendordir" != x])
|
||||
|
||||
if test "$enable_shadowgrp" = "yes"; then
|
||||
AC_DEFINE(SHADOWGRP, 1, [Define to support the shadow group file.])
|
||||
fi
|
||||
@@ -321,11 +358,12 @@ 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.
|
||||
JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
|
||||
[DocBook XML DTD V4.1.2], [], enable_man=no)
|
||||
JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.5//EN],
|
||||
[DocBook XML DTD V4.5], [], enable_man=no)
|
||||
JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
|
||||
[DocBook XSL Stylesheets >= 1.70.1], [], enable_man=no)
|
||||
fi
|
||||
@@ -449,6 +487,20 @@ if test "$with_libcrack" = "yes"; then
|
||||
AC_DEFINE(HAVE_LIBCRACK_PW, 1, [Defined if it includes *Pw functions.]))
|
||||
fi
|
||||
|
||||
if test "$with_btrfs" != "no"; then
|
||||
AC_CHECK_HEADERS([sys/statfs.h linux/magic.h linux/btrfs_tree.h], \
|
||||
[btrfs_headers="yes"], [btrfs_headers="no"])
|
||||
if test "$btrfs_headers$with_btrfs" = "noyes" ; then
|
||||
AC_MSG_ERROR([One of sys/statfs.h linux/magic.h linux/btrfs_tree.h is missing])
|
||||
fi
|
||||
|
||||
if test "$btrfs_headers" = "yes" ; then
|
||||
AC_DEFINE(WITH_BTRFS, 1, [Build shadow with BtrFS support])
|
||||
with_btrfs="yes"
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(WITH_BTRFS, test x$with_btrfs = xyes)
|
||||
|
||||
AC_SUBST(LIBSELINUX)
|
||||
AC_SUBST(LIBSEMANAGE)
|
||||
if test "$with_selinux" != "no"; then
|
||||
@@ -473,7 +525,7 @@ if test "$with_selinux" != "no"; then
|
||||
AC_MSG_ERROR([libsemanage not found])
|
||||
fi
|
||||
|
||||
if test "$selinux_lib$semanage_lib" == "yesyes" ; then
|
||||
if test "$selinux_lib$semanage_lib" = "yesyes" ; then
|
||||
AC_DEFINE(WITH_SELINUX, 1,
|
||||
[Build shadow with SELinux support])
|
||||
LIBSELINUX="-lselinux"
|
||||
@@ -563,7 +615,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)
|
||||
@@ -593,6 +645,19 @@ if test "$enable_acct_tools_setuid" != "no"; then
|
||||
fi
|
||||
AM_CONDITIONAL(ACCT_TOOLS_SETUID, test "x$enable_acct_tools_setuid" = "xyes")
|
||||
|
||||
|
||||
AC_ARG_WITH(fcaps,
|
||||
[AC_HELP_STRING([--with-fcaps], [use file capabilities instead of suid binaries for newuidmap/newgidmap @<:@default=no@:>@])],
|
||||
[with_fcaps=$withval], [with_fcaps=no])
|
||||
AM_CONDITIONAL(FCAPS, test "x$with_fcaps" = "xyes")
|
||||
|
||||
if test "x$with_fcaps" = "xyes"; then
|
||||
AC_CHECK_PROGS(capcmd, "setcap")
|
||||
if test "x$capcmd" = "x" ; then
|
||||
AC_MSG_ERROR([setcap command not available])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBSKEY)
|
||||
AC_SUBST(LIBMD)
|
||||
if test "$with_skey" = "yes"; then
|
||||
@@ -668,12 +733,17 @@ if test "$with_libpam" = "yes"; then
|
||||
echo " suid account management tools: $enable_acct_tools_setuid"
|
||||
fi
|
||||
echo " SELinux support: $with_selinux"
|
||||
echo " BtrFS support: $with_btrfs"
|
||||
echo " ACL support: $with_acl"
|
||||
echo " Extended Attributes support: $with_attr"
|
||||
echo " tcb support (incomplete): $with_tcb"
|
||||
echo " shadow group support: $enable_shadowgrp"
|
||||
echo " S/Key support: $with_skey"
|
||||
echo " SHA passwords encryption: $with_sha_crypt"
|
||||
echo " bcrypt passwords encryption: $with_bcrypt"
|
||||
echo " nscd support: $with_nscd"
|
||||
echo " sssd support: $with_sssd"
|
||||
echo " subordinate IDs support: $enable_subids"
|
||||
echo " use file caps: $with_fcaps"
|
||||
echo " install su: $with_su"
|
||||
echo
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
15
docs/index.html
Normal file
15
docs/index.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<HEAD>
|
||||
<title>shadow - Welcome</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2> Welcome!</h2>
|
||||
<p> This is the shadow tool suite home page. </p>
|
||||
|
||||
<p>
|
||||
You can find releases <a href="https://github.com/shadow-maint/shadow/releases">here</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Raise issues, request features, and report bugs <a href="https://github.com/shadow-maint/shadow/issues">here</a>.
|
||||
</p>
|
||||
</body>
|
||||
@@ -31,6 +31,15 @@ LOG_OK_LOGINS no
|
||||
#
|
||||
LASTLOG_ENAB yes
|
||||
|
||||
#
|
||||
# Limit the highest user ID number for which the lastlog entries should
|
||||
# be updated.
|
||||
#
|
||||
# No LASTLOG_UID_MAX means that there is no user ID limit for writing
|
||||
# lastlog entries.
|
||||
#
|
||||
#LASTLOG_UID_MAX
|
||||
|
||||
#
|
||||
# Enable checking and display of mailbox status upon login.
|
||||
#
|
||||
@@ -189,7 +198,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
|
||||
|
||||
#
|
||||
@@ -311,6 +320,7 @@ CHFN_RESTRICT rwh
|
||||
# If set to MD5, MD5-based algorithm will be used for encrypting password
|
||||
# If set to SHA256, SHA256-based algorithm will be used for encrypting password
|
||||
# If set to SHA512, SHA512-based algorithm will be used for encrypting password
|
||||
# If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password
|
||||
# If set to DES, DES-based algorithm will be used for encrypting password (default)
|
||||
# Overrides the MD5_CRYPT_ENAB option
|
||||
#
|
||||
@@ -332,8 +342,23 @@ CHFN_RESTRICT rwh
|
||||
# If only one of the MIN or MAX values is set, then this value will be used.
|
||||
# If MIN > MAX, the highest value will be used.
|
||||
#
|
||||
# SHA_CRYPT_MIN_ROUNDS 5000
|
||||
# SHA_CRYPT_MAX_ROUNDS 5000
|
||||
#SHA_CRYPT_MIN_ROUNDS 5000
|
||||
#SHA_CRYPT_MAX_ROUNDS 5000
|
||||
|
||||
#
|
||||
# Only works if ENCRYPT_METHOD is set to BCRYPT.
|
||||
#
|
||||
# Define the number of BCRYPT rounds.
|
||||
# With a lot of rounds, it is more difficult to brute-force the password.
|
||||
# However, more CPU resources will be needed to authenticate users if
|
||||
# this value is increased.
|
||||
#
|
||||
# If not specified, 13 rounds will be attempted.
|
||||
# If only one of the MIN or MAX values is set, then this value will be used.
|
||||
# If MIN > MAX, the highest value will be used.
|
||||
#
|
||||
#BCRYPT_MIN_ROUNDS 13
|
||||
#BCRYPT_MAX_ROUNDS 13
|
||||
|
||||
#
|
||||
# List of groups to add to the user's supplementary group set
|
||||
|
||||
@@ -6,8 +6,7 @@ pamd_files = \
|
||||
chsh \
|
||||
groupmems \
|
||||
login \
|
||||
passwd \
|
||||
su
|
||||
passwd
|
||||
|
||||
pamd_acct_tools_files = \
|
||||
chage \
|
||||
@@ -29,4 +28,8 @@ pamd_DATA += $(pamd_acct_tools_files)
|
||||
endif
|
||||
endif
|
||||
|
||||
if WITH_SU
|
||||
pamd_files += su
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(pamd_files) $(pamd_acct_tools_files)
|
||||
|
||||
@@ -6,6 +6,10 @@ DEFS =
|
||||
noinst_LTLIBRARIES = libshadow.la
|
||||
|
||||
libshadow_la_LDFLAGS = -version-info 0:0:0
|
||||
libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS)
|
||||
if HAVE_VENDORDIR
|
||||
libshadow_la_CPPFLAGS += -DVENDORDIR=\"$(VENDORDIR)\"
|
||||
endif
|
||||
|
||||
libshadow_la_SOURCES = \
|
||||
commonio.c \
|
||||
@@ -30,6 +34,8 @@ libshadow_la_SOURCES = \
|
||||
lockpw.c \
|
||||
nscd.c \
|
||||
nscd.h \
|
||||
sssd.c \
|
||||
sssd.h \
|
||||
pam_defs.h \
|
||||
port.c \
|
||||
port.h \
|
||||
|
||||
104
lib/commonio.c
104
lib/commonio.c
@@ -45,6 +45,7 @@
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include "nscd.h"
|
||||
#include "sssd.h"
|
||||
#ifdef WITH_TCB
|
||||
#include <tcb.h>
|
||||
#endif /* WITH_TCB */
|
||||
@@ -140,7 +141,7 @@ static int do_lock_file (const char *file, const char *lock, bool log)
|
||||
int retval;
|
||||
char buf[32];
|
||||
|
||||
fd = open (file, O_CREAT | O_EXCL | O_WRONLY, 0600);
|
||||
fd = open (file, O_CREAT | O_TRUNC | O_WRONLY, 0600);
|
||||
if (-1 == fd) {
|
||||
if (log) {
|
||||
(void) fprintf (stderr,
|
||||
@@ -301,15 +302,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;
|
||||
}
|
||||
@@ -366,6 +364,7 @@ static void free_linked_list (struct commonio_db *db)
|
||||
int commonio_setname (struct commonio_db *db, const char *name)
|
||||
{
|
||||
snprintf (db->filename, sizeof (db->filename), "%s", name);
|
||||
db->setname = true;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -378,57 +377,77 @@ 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 = 0;
|
||||
|
||||
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) {
|
||||
goto cleanup_ENOMEM;
|
||||
}
|
||||
lock = (char*)malloc(lock_file_len);
|
||||
if(lock == NULL) {
|
||||
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)
|
||||
{
|
||||
int i;
|
||||
|
||||
#ifdef HAVE_LCKPWDF
|
||||
/*
|
||||
* only if the system libc has a real lckpwdf() - the one from
|
||||
* Only if the system libc has a real lckpwdf() - the one from
|
||||
* lockpw.c calls us and would cause infinite recursion!
|
||||
* It is also not used with the prefix option.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Call lckpwdf() on the first lock.
|
||||
* If it succeeds, call *_lock() only once
|
||||
* (no retries, it should always succeed).
|
||||
*/
|
||||
if (0 == lock_count) {
|
||||
if (lckpwdf () == -1) {
|
||||
if (geteuid () != 0) {
|
||||
(void) fprintf (stderr,
|
||||
"%s: Permission denied.\n",
|
||||
Prog);
|
||||
if (!db->setname) {
|
||||
/*
|
||||
* Call lckpwdf() on the first lock.
|
||||
* If it succeeds, call *_lock() only once
|
||||
* (no retries, it should always succeed).
|
||||
*/
|
||||
if (0 == lock_count) {
|
||||
if (lckpwdf () == -1) {
|
||||
if (geteuid () != 0) {
|
||||
(void) fprintf (stderr,
|
||||
"%s: Permission denied.\n",
|
||||
Prog);
|
||||
}
|
||||
return 0; /* failure */
|
||||
}
|
||||
return 0; /* failure */
|
||||
}
|
||||
}
|
||||
|
||||
if (commonio_lock_nowait (db, true) != 0) {
|
||||
return 1; /* success */
|
||||
}
|
||||
if (commonio_lock_nowait (db, true) != 0) {
|
||||
return 1; /* success */
|
||||
}
|
||||
|
||||
ulckpwdf ();
|
||||
return 0; /* failure */
|
||||
#else /* !HAVE_LCKPWDF */
|
||||
int i;
|
||||
ulckpwdf ();
|
||||
return 0; /* failure */
|
||||
}
|
||||
#endif /* !HAVE_LCKPWDF */
|
||||
|
||||
/*
|
||||
* lckpwdf() not used - do it the old way.
|
||||
@@ -455,7 +474,6 @@ int commonio_lock (struct commonio_db *db)
|
||||
}
|
||||
}
|
||||
return 0; /* failure */
|
||||
#endif /* !HAVE_LCKPWDF */
|
||||
}
|
||||
|
||||
static void dec_lock_count (void)
|
||||
@@ -468,6 +486,7 @@ static void dec_lock_count (void)
|
||||
if (nscd_need_reload) {
|
||||
nscd_flush_cache ("passwd");
|
||||
nscd_flush_cache ("group");
|
||||
sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
|
||||
nscd_need_reload = false;
|
||||
}
|
||||
#ifdef HAVE_LCKPWDF
|
||||
@@ -754,16 +773,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
|
||||
@@ -908,7 +927,6 @@ static int write_all (const struct commonio_db *db)
|
||||
|
||||
|
||||
int commonio_close (struct commonio_db *db)
|
||||
/*@requires notnull db->fp@*/
|
||||
{
|
||||
char buf[1024];
|
||||
int errors = 0;
|
||||
@@ -921,8 +939,10 @@ int commonio_close (struct commonio_db *db)
|
||||
db->isopen = false;
|
||||
|
||||
if (!db->changed || db->readonly) {
|
||||
(void) fclose (db->fp);
|
||||
db->fp = NULL;
|
||||
if (NULL != db->fp) {
|
||||
(void) fclose (db->fp);
|
||||
db->fp = NULL;
|
||||
}
|
||||
goto success;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
#ifndef _COMMONIO_H
|
||||
#define _COMMONIO_H
|
||||
#ifndef COMMONIO_H
|
||||
#define COMMONIO_H
|
||||
|
||||
#ifdef WITH_SELINUX
|
||||
#include <selinux/selinux.h>
|
||||
@@ -143,6 +143,7 @@ struct commonio_db {
|
||||
bool isopen:1;
|
||||
bool locked:1;
|
||||
bool readonly:1;
|
||||
bool setname:1;
|
||||
};
|
||||
|
||||
extern int commonio_setname (struct commonio_db *, const char *);
|
||||
|
||||
@@ -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);
|
||||
@@ -382,4 +382,10 @@ extern char *strerror ();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SECURE_GETENV
|
||||
# define shadow_getenv(name) secure_getenv(name)
|
||||
# else
|
||||
# define shadow_getenv(name) getenv(name)
|
||||
#endif
|
||||
|
||||
#endif /* _DEFINES_H_ */
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
case '1':
|
||||
method = "MD5";
|
||||
break;
|
||||
case '2':
|
||||
method = "BCRYPT";
|
||||
break;
|
||||
case '5':
|
||||
method = "SHA256";
|
||||
break;
|
||||
|
||||
95
lib/getdef.c
95
lib/getdef.c
@@ -40,6 +40,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#ifdef USE_ECONF
|
||||
#include <libeconf.h>
|
||||
#endif
|
||||
#include "getdef.h"
|
||||
/*
|
||||
* A configuration item definition.
|
||||
@@ -92,6 +95,7 @@ static struct itemdef def_table[] = {
|
||||
{"GID_MIN", NULL},
|
||||
{"HUSHLOGIN_FILE", NULL},
|
||||
{"KILLCHAR", NULL},
|
||||
{"LASTLOG_UID_MAX", NULL},
|
||||
{"LOGIN_RETRIES", NULL},
|
||||
{"LOGIN_TIMEOUT", NULL},
|
||||
{"LOG_OK_LOGINS", NULL},
|
||||
@@ -106,6 +110,10 @@ static struct itemdef def_table[] = {
|
||||
#ifdef USE_SHA_CRYPT
|
||||
{"SHA_CRYPT_MAX_ROUNDS", NULL},
|
||||
{"SHA_CRYPT_MIN_ROUNDS", NULL},
|
||||
#endif
|
||||
#ifdef USE_BCRYPT
|
||||
{"BCRYPT_MAX_ROUNDS", NULL},
|
||||
{"BCRYPT_MIN_ROUNDS", NULL},
|
||||
#endif
|
||||
{"SUB_GID_COUNT", NULL},
|
||||
{"SUB_GID_MAX", NULL},
|
||||
@@ -148,13 +156,23 @@ static struct itemdef knowndef_table[] = {
|
||||
#ifdef USE_PAM
|
||||
PAMDEFS
|
||||
#endif
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
#ifdef USE_ECONF
|
||||
#ifdef VENDORDIR
|
||||
static const char* vendordir = VENDORDIR;
|
||||
#else
|
||||
static const char* vendordir = NULL;
|
||||
#endif
|
||||
static const char* sysconfdir = "/etc";
|
||||
#else
|
||||
#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 */
|
||||
#endif
|
||||
static bool def_loaded = false; /* are defs already loaded? */
|
||||
|
||||
/* local function prototypes */
|
||||
@@ -423,6 +441,37 @@ 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)
|
||||
{
|
||||
#ifdef USE_ECONF
|
||||
size_t len;
|
||||
char* cp;
|
||||
|
||||
len = strlen(file) + strlen(sysconfdir) + 2;
|
||||
cp = malloc(len);
|
||||
if (cp == NULL)
|
||||
exit (13);
|
||||
snprintf(cp, len, "%s/%s", file, sysconfdir);
|
||||
sysconfdir = cp;
|
||||
#ifdef VENDORDIR
|
||||
len = strlen(file) + strlen(vendordir) + 2;
|
||||
cp = malloc(len);
|
||||
if (cp == NULL)
|
||||
exit (13);
|
||||
snprintf(cp, len, "%s/%s", file, vendordir);
|
||||
vendordir = cp;
|
||||
#endif
|
||||
#else
|
||||
def_fname = file;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* def_load - load configuration table
|
||||
*
|
||||
@@ -431,9 +480,16 @@ out:
|
||||
|
||||
static void def_load (void)
|
||||
{
|
||||
#ifdef USE_ECONF
|
||||
econf_file *defs_file = NULL;
|
||||
econf_err error;
|
||||
char **keys;
|
||||
size_t key_number;
|
||||
#else
|
||||
int i;
|
||||
FILE *fp;
|
||||
char buf[1024], *name, *value, *s;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Set the initialized flag.
|
||||
@@ -441,6 +497,42 @@ static void def_load (void)
|
||||
*/
|
||||
def_loaded = true;
|
||||
|
||||
#ifdef USE_ECONF
|
||||
|
||||
error = econf_readDirs (&defs_file, vendordir, sysconfdir, "login", "defs", " \t", "#");
|
||||
if (error) {
|
||||
if (error == ECONF_NOFILE)
|
||||
return;
|
||||
|
||||
SYSLOG ((LOG_CRIT, "cannot open login definitions [%s]",
|
||||
econf_errString(error)));
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if ((error = econf_getKeys(defs_file, NULL, &key_number, &keys))) {
|
||||
SYSLOG ((LOG_CRIT, "cannot read login definitions [%s]",
|
||||
econf_errString(error)));
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < key_number; i++) {
|
||||
char *value;
|
||||
|
||||
econf_getStringValue(defs_file, NULL, keys[i], &value);
|
||||
|
||||
/*
|
||||
* Store the value in def_table.
|
||||
*
|
||||
* Ignore failures to load the login.defs file.
|
||||
* The error was already reported to the user and to
|
||||
* syslog. The tools will just use their default values.
|
||||
*/
|
||||
(void)putdef_str (keys[i], value);
|
||||
}
|
||||
|
||||
econf_free (keys);
|
||||
econf_free (defs_file);
|
||||
#else
|
||||
/*
|
||||
* Open the configuration definitions file.
|
||||
*/
|
||||
@@ -504,6 +596,7 @@ static void def_load (void)
|
||||
}
|
||||
|
||||
(void) fclose (fp);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -139,7 +139,8 @@ static /*@owned@*/struct commonio_db group_db = {
|
||||
false, /* changed */
|
||||
false, /* isopen */
|
||||
false, /* locked */
|
||||
false /* readonly */
|
||||
false, /* readonly */
|
||||
false /* setname */
|
||||
};
|
||||
|
||||
int gr_setdbname (const char *filename)
|
||||
@@ -338,8 +339,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++);
|
||||
|
||||
@@ -72,6 +72,14 @@ extern int expire (const struct passwd *, /*@null@*/const struct spwd *);
|
||||
/* isexpired.c */
|
||||
extern int isexpired (const struct passwd *, /*@null@*/const struct spwd *);
|
||||
|
||||
/* btrfs.c */
|
||||
#ifdef WITH_BTRFS
|
||||
extern int btrfs_create_subvolume(const char *path);
|
||||
extern int btrfs_remove_subvolume(const char *path);
|
||||
extern int btrfs_is_subvolume(const char *path);
|
||||
extern int is_btrfs(const char *path);
|
||||
#endif
|
||||
|
||||
/* basename() renamed to Basename() to avoid libc name space confusion */
|
||||
/* basename.c */
|
||||
extern /*@observer@*/const char *Basename (const char *str);
|
||||
@@ -179,6 +187,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 +262,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 +282,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 *);
|
||||
@@ -310,6 +336,7 @@ extern /*@observer@*/const char *crypt_make_salt (/*@null@*//*@observer@*/const
|
||||
#ifdef WITH_SELINUX
|
||||
extern int set_selinux_file_context (const char *dst_name);
|
||||
extern int reset_selinux_file_context (void);
|
||||
extern int check_selinux_permit (const char *perm_name);
|
||||
#endif
|
||||
|
||||
/* semanage.c */
|
||||
@@ -398,17 +425,19 @@ extern int set_filesize_limit (int blocks);
|
||||
extern int user_busy (const char *name, uid_t uid);
|
||||
|
||||
/* utmp.c */
|
||||
#ifndef USE_UTMPX
|
||||
extern /*@null@*/struct utmp *get_current_utmp (void);
|
||||
extern struct utmp *prepare_utmp (const char *name,
|
||||
const char *line,
|
||||
const char *host,
|
||||
/*@null@*/const struct utmp *ut);
|
||||
extern int setutmp (struct utmp *ut);
|
||||
#ifdef USE_UTMPX
|
||||
#else
|
||||
extern /*@null@*/struct utmpx *get_current_utmp (void);
|
||||
extern struct utmpx *prepare_utmpx (const char *name,
|
||||
const char *line,
|
||||
const char *host,
|
||||
/*@null@*/const struct utmp *ut);
|
||||
/*@null@*/const struct utmpx *ut);
|
||||
extern int setutmpx (struct utmpx *utx);
|
||||
#endif /* USE_UTMPX */
|
||||
|
||||
|
||||
@@ -114,7 +114,8 @@ static struct commonio_db passwd_db = {
|
||||
false, /* changed */
|
||||
false, /* isopen */
|
||||
false, /* locked */
|
||||
false /* readonly */
|
||||
false, /* readonly */
|
||||
false /* setname */
|
||||
};
|
||||
|
||||
int pw_setdbname (const char *filename)
|
||||
|
||||
100
lib/selinux.c
100
lib/selinux.c
@@ -34,6 +34,7 @@
|
||||
#include "defines.h"
|
||||
|
||||
#include <selinux/selinux.h>
|
||||
#include <selinux/context.h>
|
||||
#include "prototypes.h"
|
||||
|
||||
|
||||
@@ -98,6 +99,105 @@ int reset_selinux_file_context (void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Log callback for libselinux internal error reporting.
|
||||
*/
|
||||
__attribute__((__format__ (printf, 2, 3)))
|
||||
static int selinux_log_cb (int type, const char *fmt, ...) {
|
||||
va_list ap;
|
||||
char *buf;
|
||||
int r;
|
||||
#ifdef WITH_AUDIT
|
||||
static int selinux_audit_fd = -2;
|
||||
#endif
|
||||
|
||||
va_start (ap, fmt);
|
||||
r = vasprintf (&buf, fmt, ap);
|
||||
va_end (ap);
|
||||
|
||||
if (r < 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef WITH_AUDIT
|
||||
if (-2 == selinux_audit_fd) {
|
||||
selinux_audit_fd = audit_open ();
|
||||
|
||||
if (-1 == selinux_audit_fd) {
|
||||
/* You get these only when the kernel doesn't have
|
||||
* audit compiled in. */
|
||||
if ( (errno != EINVAL)
|
||||
&& (errno != EPROTONOSUPPORT)
|
||||
&& (errno != EAFNOSUPPORT)) {
|
||||
|
||||
(void) fputs (_("Cannot open audit interface.\n"),
|
||||
stderr);
|
||||
SYSLOG ((LOG_WARN, "Cannot open audit interface."));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (-1 != selinux_audit_fd) {
|
||||
if (SELINUX_AVC == type) {
|
||||
if (audit_log_user_avc_message (selinux_audit_fd,
|
||||
AUDIT_USER_AVC, buf, NULL, NULL,
|
||||
NULL, 0) > 0) {
|
||||
goto skip_syslog;
|
||||
}
|
||||
} else if (SELINUX_ERROR == type) {
|
||||
if (audit_log_user_avc_message (selinux_audit_fd,
|
||||
AUDIT_USER_SELINUX_ERR, buf, NULL, NULL,
|
||||
NULL, 0) > 0) {
|
||||
goto skip_syslog;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
SYSLOG ((LOG_WARN, "libselinux: %s", buf));
|
||||
|
||||
skip_syslog:
|
||||
free (buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* check_selinux_permit - Check whether SELinux grants the given
|
||||
* operation
|
||||
*
|
||||
* Parameter is the SELinux permission name, e.g. rootok
|
||||
*
|
||||
* Returns 0 when permission is granted
|
||||
* or something failed but running in
|
||||
* permissive mode
|
||||
*/
|
||||
int check_selinux_permit (const char *perm_name)
|
||||
{
|
||||
char *user_context_str;
|
||||
int r;
|
||||
|
||||
if (0 == is_selinux_enabled ()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
selinux_set_callback (SELINUX_CB_LOG, (union selinux_callback) selinux_log_cb);
|
||||
|
||||
if (getprevcon (&user_context_str) != 0) {
|
||||
fprintf (stderr,
|
||||
_("%s: can not get previous SELinux process context: %s\n"),
|
||||
Prog, strerror (errno));
|
||||
SYSLOG ((LOG_WARN,
|
||||
"can not get previous SELinux process context: %s",
|
||||
strerror (errno)));
|
||||
return (security_getenforce () != 0);
|
||||
}
|
||||
|
||||
r = selinux_check_access (user_context_str, user_context_str, "passwd", perm_name, NULL);
|
||||
freecon (user_context_str);
|
||||
return r;
|
||||
}
|
||||
|
||||
#else /* !WITH_SELINUX */
|
||||
extern int errno; /* warning: ANSI C forbids an empty source file */
|
||||
#endif /* !WITH_SELINUX */
|
||||
|
||||
@@ -136,7 +136,7 @@ struct group *sgetgrent (const char *buf)
|
||||
cp++;
|
||||
}
|
||||
}
|
||||
if (i < (NFIELDS - 1) || *grpfields[2] == '\0') {
|
||||
if (i < (NFIELDS - 1) || *grpfields[2] == '\0' || cp != NULL) {
|
||||
return (struct group *) 0;
|
||||
}
|
||||
grent.gr_name = grpfields[0];
|
||||
|
||||
@@ -90,6 +90,11 @@ struct passwd *sgetpwent (const char *buf)
|
||||
}
|
||||
}
|
||||
|
||||
/* something at the end, columns over shot */
|
||||
if( cp != NULL ) {
|
||||
return( NULL );
|
||||
}
|
||||
|
||||
/*
|
||||
* There must be exactly NFIELDS colon separated fields or
|
||||
* the entry is invalid. Also, the UID and GID must be non-blank.
|
||||
|
||||
@@ -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)
|
||||
@@ -237,7 +238,8 @@ static struct commonio_db gshadow_db = {
|
||||
false, /* changed */
|
||||
false, /* isopen */
|
||||
false, /* locked */
|
||||
false /* readonly */
|
||||
false, /* readonly */
|
||||
false /* setname */
|
||||
};
|
||||
|
||||
int sgr_setdbname (const char *filename)
|
||||
|
||||
@@ -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>
|
||||
@@ -113,7 +114,8 @@ static struct commonio_db shadow_db = {
|
||||
false, /* changed */
|
||||
false, /* isopen */
|
||||
false, /* locked */
|
||||
false /* readonly */
|
||||
false, /* readonly */
|
||||
false /* setname */
|
||||
};
|
||||
|
||||
int spw_setdbname (const char *filename)
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
*/
|
||||
|
||||
/* $Id$ */
|
||||
#ifndef _SHADOWIO_H
|
||||
#define _SHADOWIO_H
|
||||
#ifndef SHADOWIO_H
|
||||
#define SHADOWIO_H
|
||||
|
||||
#include "defines.h"
|
||||
|
||||
|
||||
@@ -68,8 +68,10 @@ int run_command (const char *cmd, const char *argv[],
|
||||
|
||||
do {
|
||||
wpid = waitpid (pid, status, 0);
|
||||
if ((pid_t)-1 == wpid && errno == ECHILD)
|
||||
break;
|
||||
} while ( ((pid_t)-1 == wpid && errno == EINTR)
|
||||
|| (wpid != pid));
|
||||
|| ((pid_t)-1 != wpid && wpid != pid));
|
||||
|
||||
if ((pid_t)-1 == wpid) {
|
||||
fprintf (stderr, "%s: waitpid (status: %d): %s\n",
|
||||
|
||||
75
lib/sssd.c
Normal file
75
lib/sssd.c
Normal file
@@ -0,0 +1,75 @@
|
||||
/* Author: Peter Vrabec <pvrabec@redhat.com> */
|
||||
|
||||
#include <config.h>
|
||||
#ifdef USE_SSSD
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/types.h>
|
||||
#include "exitcodes.h"
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
#include "sssd.h"
|
||||
|
||||
#define MSG_SSSD_FLUSH_CACHE_FAILED "%s: Failed to flush the sssd cache.\n"
|
||||
|
||||
int sssd_flush_cache (int dbflags)
|
||||
{
|
||||
int status, code, rv;
|
||||
const char *cmd = "/usr/sbin/sss_cache";
|
||||
char *sss_cache_args = NULL;
|
||||
const char *spawnedArgs[] = {"sss_cache", NULL, NULL};
|
||||
const char *spawnedEnv[] = {NULL};
|
||||
int i = 0;
|
||||
|
||||
sss_cache_args = malloc(4);
|
||||
if (sss_cache_args == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
sss_cache_args[i++] = '-';
|
||||
if (dbflags & SSSD_DB_PASSWD) {
|
||||
sss_cache_args[i++] = 'U';
|
||||
}
|
||||
if (dbflags & SSSD_DB_GROUP) {
|
||||
sss_cache_args[i++] = 'G';
|
||||
}
|
||||
sss_cache_args[i++] = '\0';
|
||||
if (i == 2) {
|
||||
/* Neither passwd nor group, nothing to do */
|
||||
free(sss_cache_args);
|
||||
return 0;
|
||||
}
|
||||
spawnedArgs[1] = sss_cache_args;
|
||||
|
||||
rv = run_command (cmd, spawnedArgs, spawnedEnv, &status);
|
||||
free(sss_cache_args);
|
||||
if (rv != 0) {
|
||||
/* run_command writes its own more detailed message. */
|
||||
(void) fprintf (stderr, _(MSG_SSSD_FLUSH_CACHE_FAILED), Prog);
|
||||
return -1;
|
||||
}
|
||||
|
||||
code = WEXITSTATUS (status);
|
||||
if (!WIFEXITED (status)) {
|
||||
(void) fprintf (stderr,
|
||||
_("%s: sss_cache did not terminate normally (signal %d)\n"),
|
||||
Prog, WTERMSIG (status));
|
||||
return -1;
|
||||
} else if (code == E_CMD_NOTFOUND) {
|
||||
/* sss_cache is not installed, or it is installed but uses an
|
||||
interpreter that is missing. Probably the former. */
|
||||
return 0;
|
||||
} else if (code != 0) {
|
||||
(void) fprintf (stderr, _("%s: sss_cache exited with status %d\n"),
|
||||
Prog, code);
|
||||
(void) fprintf (stderr, _(MSG_SSSD_FLUSH_CACHE_FAILED), Prog);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else /* USE_SSSD */
|
||||
extern int errno; /* warning: ANSI C forbids an empty source file */
|
||||
#endif /* USE_SSSD */
|
||||
|
||||
17
lib/sssd.h
Normal file
17
lib/sssd.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _SSSD_H_
|
||||
#define _SSSD_H_
|
||||
|
||||
#define SSSD_DB_PASSWD 0x001
|
||||
#define SSSD_DB_GROUP 0x002
|
||||
|
||||
/*
|
||||
* sssd_flush_cache - flush specified service buffer in sssd cache
|
||||
*/
|
||||
#ifdef USE_SSSD
|
||||
extern int sssd_flush_cache (int dbflags);
|
||||
#else
|
||||
#define sssd_flush_cache(service) (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -152,11 +152,6 @@ static struct commonio_ops subordinate_ops = {
|
||||
NULL, /* close_hook */
|
||||
};
|
||||
|
||||
static /*@observer@*/ /*@null*/const struct subordinate_range *subordinate_next(struct commonio_db *db)
|
||||
{
|
||||
return (const struct subordinate_range *)commonio_next (db);
|
||||
}
|
||||
|
||||
/*
|
||||
* range_exists: Check whether @owner owns any ranges
|
||||
*
|
||||
@@ -181,7 +176,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 +216,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 +413,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,
|
||||
@@ -550,7 +545,8 @@ static struct commonio_db subordinate_uid_db = {
|
||||
false, /* changed */
|
||||
false, /* isopen */
|
||||
false, /* locked */
|
||||
false /* readonly */
|
||||
false, /* readonly */
|
||||
false /* setname */
|
||||
};
|
||||
|
||||
int sub_uid_setdbname (const char *filename)
|
||||
@@ -631,7 +627,8 @@ static struct commonio_db subordinate_gid_db = {
|
||||
false, /* changed */
|
||||
false, /* isopen */
|
||||
false, /* locked */
|
||||
false /* readonly */
|
||||
false, /* readonly */
|
||||
false /* setname */
|
||||
};
|
||||
|
||||
int sub_gid_setdbname (const char *filename)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
EXTRA_DIST = .indent.pro xgetXXbyYY.c
|
||||
|
||||
INCLUDES = -I$(top_srcdir)/lib
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/lib $(ECONF_CPPFLAGS)
|
||||
|
||||
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 \
|
||||
@@ -70,3 +72,8 @@ libmisc_a_SOURCES = \
|
||||
xgetspnam.c \
|
||||
xmalloc.c \
|
||||
yesno.c
|
||||
|
||||
if WITH_BTRFS
|
||||
libmisc_a_SOURCES += btrfs.c
|
||||
endif
|
||||
|
||||
|
||||
111
libmisc/btrfs.c
Normal file
111
libmisc/btrfs.c
Normal file
@@ -0,0 +1,111 @@
|
||||
#include <linux/btrfs_tree.h>
|
||||
#include <linux/magic.h>
|
||||
#include <sys/statfs.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "prototypes.h"
|
||||
|
||||
static bool path_exists(const char *p)
|
||||
{
|
||||
int ret;
|
||||
struct stat sb;
|
||||
|
||||
return stat(p, &sb) == 0;
|
||||
}
|
||||
|
||||
static const char *btrfs_cmd(void)
|
||||
{
|
||||
const char *btrfs_paths[] = {"/sbin/btrfs",
|
||||
"/bin/btrfs", "/usr/sbin/btrfs", "/usr/bin/btrfs", NULL};
|
||||
const char *p;
|
||||
int i;
|
||||
|
||||
for (i = 0, p = btrfs_paths[i]; p; i++, p = btrfs_paths[i])
|
||||
if (path_exists(p))
|
||||
return p;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int run_btrfs_subvolume_cmd(const char *subcmd, const char *arg1, const char *arg2)
|
||||
{
|
||||
int status = 0;
|
||||
const char *cmd = btrfs_cmd();
|
||||
const char *argv[] = {
|
||||
"btrfs",
|
||||
"subvolume",
|
||||
subcmd,
|
||||
arg1,
|
||||
arg2,
|
||||
NULL
|
||||
};
|
||||
|
||||
if (access(cmd, X_OK)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (run_command(cmd, argv, NULL, &status))
|
||||
return -1;
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
int btrfs_create_subvolume(const char *path)
|
||||
{
|
||||
return run_btrfs_subvolume_cmd("create", path, NULL);
|
||||
}
|
||||
|
||||
|
||||
int btrfs_remove_subvolume(const char *path)
|
||||
{
|
||||
return run_btrfs_subvolume_cmd("delete", "-C", path);
|
||||
}
|
||||
|
||||
|
||||
/* Adapted from btrfsprogs */
|
||||
/*
|
||||
* This intentionally duplicates btrfs_util_is_subvolume_fd() instead of opening
|
||||
* a file descriptor and calling it, because fstat() and fstatfs() don't accept
|
||||
* file descriptors opened with O_PATH on old kernels (before v3.6 and before
|
||||
* v3.12, respectively), but stat() and statfs() can be called on a path that
|
||||
* the user doesn't have read or write permissions to.
|
||||
*
|
||||
* returns:
|
||||
* 1 - btrfs subvolume
|
||||
* 0 - not btrfs subvolume
|
||||
* -1 - error
|
||||
*/
|
||||
int btrfs_is_subvolume(const char *path)
|
||||
{
|
||||
struct stat st;
|
||||
int ret;
|
||||
|
||||
ret = is_btrfs(path);
|
||||
if (ret <= 0)
|
||||
return ret;
|
||||
|
||||
ret = stat(path, &st);
|
||||
if (ret == -1)
|
||||
return -1;
|
||||
|
||||
if (st.st_ino != BTRFS_FIRST_FREE_OBJECTID || !S_ISDIR(st.st_mode)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* Adapted from btrfsprogs */
|
||||
int is_btrfs(const char *path)
|
||||
{
|
||||
struct statfs sfs;
|
||||
int ret;
|
||||
|
||||
ret = statfs(path, &sfs);
|
||||
if (ret == -1)
|
||||
return -1;
|
||||
|
||||
return sfs.f_type == BTRFS_SUPER_MAGIC;
|
||||
}
|
||||
|
||||
@@ -46,11 +46,18 @@
|
||||
#include "defines.h"
|
||||
#include "chkname.h"
|
||||
|
||||
int allow_bad_names = false;
|
||||
|
||||
static bool is_valid_name (const char *name)
|
||||
{
|
||||
if (allow_bad_names) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* User/group names must match [a-z_][a-z0-9_-]*[$]
|
||||
*/
|
||||
|
||||
if (('\0' == *name) ||
|
||||
!((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
|
||||
return false;
|
||||
|
||||
@@ -50,7 +50,7 @@ static bool is_listed (const char *cfgin, const char *tty, bool def);
|
||||
static bool is_listed (const char *cfgin, const char *tty, bool def)
|
||||
{
|
||||
FILE *fp;
|
||||
char buf[200], *s;
|
||||
char buf[1024], *s;
|
||||
const char *cons;
|
||||
|
||||
/*
|
||||
@@ -70,7 +70,8 @@ static bool is_listed (const char *cfgin, const char *tty, bool def)
|
||||
|
||||
if (*cons != '/') {
|
||||
char *pbuf;
|
||||
strcpy (buf, cons);
|
||||
strncpy (buf, cons, sizeof (buf));
|
||||
buf[sizeof (buf) - 1] = '\0';
|
||||
pbuf = &buf[0];
|
||||
while ((s = strtok (pbuf, ":")) != NULL) {
|
||||
if (strcmp (s, tty) == 0) {
|
||||
|
||||
@@ -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 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 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 = shadow_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;
|
||||
}
|
||||
@@ -36,6 +36,10 @@
|
||||
#include <stdio.h>
|
||||
#include "prototypes.h"
|
||||
#include "idmapping.h"
|
||||
#include <sys/prctl.h>
|
||||
#if HAVE_SYS_CAPABILITY_H
|
||||
#include <sys/capability.h>
|
||||
#endif
|
||||
|
||||
struct map_range *get_map_ranges(int ranges, int argc, char **argv)
|
||||
{
|
||||
@@ -119,9 +123,23 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv)
|
||||
*/
|
||||
#define ULONG_DIGITS ((((sizeof(unsigned long) * CHAR_BIT) + 9)/10)*3)
|
||||
|
||||
|
||||
/*
|
||||
* The ruid refers to the caller's uid and is used to reset the effective uid
|
||||
* back to the callers real uid.
|
||||
* This clutch mainly exists for setuid-based new{g,u}idmap binaries that are
|
||||
* called in contexts where all capabilities other than the necessary
|
||||
* CAP_SET{G,U}ID capabilities are dropped. Since the kernel will require
|
||||
* assurance that the caller holds CAP_SYS_ADMIN over the target user namespace
|
||||
* the only way it can confirm is in this case is if the effective uid is
|
||||
* equivalent to the uid owning the target user namespace.
|
||||
* Note, we only support this when a) new{g,u}idmap is not called by root and
|
||||
* b) if the caller's uid and the uid retrieved via system appropriate means
|
||||
* (shadow file or other) are identical. Specifically, this does not support
|
||||
* when the root user calls the new{g,u}idmap binary for an unprivileged user.
|
||||
* If this is wanted: use file capabilities!
|
||||
*/
|
||||
void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings,
|
||||
const char *map_file)
|
||||
const char *map_file, uid_t ruid)
|
||||
{
|
||||
int idx;
|
||||
struct map_range *mapping;
|
||||
@@ -129,6 +147,43 @@ void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings,
|
||||
char *buf, *pos;
|
||||
int fd;
|
||||
|
||||
#if HAVE_SYS_CAPABILITY_H
|
||||
int cap;
|
||||
struct __user_cap_header_struct hdr = {_LINUX_CAPABILITY_VERSION_3, 0};
|
||||
struct __user_cap_data_struct data[2] = {{0}};
|
||||
|
||||
if (strcmp(map_file, "uid_map") == 0) {
|
||||
cap = CAP_SETUID;
|
||||
} else if (strcmp(map_file, "gid_map") == 0) {
|
||||
cap = CAP_SETGID;
|
||||
} else {
|
||||
fprintf(stderr, _("%s: Invalid map file %s specified\n"), Prog, map_file);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/* Align setuid- and fscaps-based new{g,u}idmap behavior. */
|
||||
if (geteuid() == 0 && geteuid() != ruid) {
|
||||
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0) {
|
||||
fprintf(stderr, _("%s: Could not prctl(PR_SET_KEEPCAPS)\n"), Prog);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (seteuid(ruid) < 0) {
|
||||
fprintf(stderr, _("%s: Could not seteuid to %d\n"), Prog, ruid);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
/* Lockdown new{g,u}idmap by dropping all unneeded capabilities. */
|
||||
memset(data, 0, sizeof(data));
|
||||
data[0].effective = CAP_TO_MASK(cap);
|
||||
data[0].permitted = data[0].effective;
|
||||
if (capset(&hdr, data) < 0) {
|
||||
fprintf(stderr, _("%s: Could not set caps\n"), Prog);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
|
||||
bufsize = ranges * ((ULONG_DIGITS + 1) * 3);
|
||||
pos = buf = xmalloc(bufsize);
|
||||
|
||||
@@ -148,7 +203,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"),
|
||||
|
||||
@@ -38,7 +38,7 @@ struct map_range {
|
||||
|
||||
extern struct map_range *get_map_ranges(int ranges, int argc, char **argv);
|
||||
extern void write_mapping(int proc_dir_fd, int ranges,
|
||||
struct map_range *mappings, const char *map_file);
|
||||
struct map_range *mappings, const char *map_file, uid_t ruid);
|
||||
|
||||
#endif /* _ID_MAPPING_H_ */
|
||||
|
||||
|
||||
@@ -268,6 +268,9 @@ static /*@observer@*//*@null@*/const char *obscure_msg (
|
||||
#ifdef USE_SHA_CRYPT
|
||||
|| (strcmp (result, "SHA256") == 0)
|
||||
|| (strcmp (result, "SHA512") == 0)
|
||||
#endif
|
||||
#ifdef USE_BCRYPT
|
||||
|| (strcmp (result, "BCRYPT") == 0)
|
||||
#endif
|
||||
) {
|
||||
return NULL;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
347
libmisc/prefix_flag.c
Normal file
347
libmisc/prefix_flag.c
Normal file
@@ -0,0 +1,347 @@
|
||||
/*
|
||||
* 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);
|
||||
|
||||
#ifdef ENABLE_SUBIDS
|
||||
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);
|
||||
#endif
|
||||
|
||||
#ifdef USE_ECONF
|
||||
setdef_config_file(prefix);
|
||||
#else
|
||||
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);
|
||||
#endif
|
||||
}
|
||||
|
||||
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;
|
||||
struct group *g;
|
||||
|
||||
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);
|
||||
}
|
||||
g = prefix_getgrnam (grname);
|
||||
return g ? __gr_dup(g) : NULL;
|
||||
}
|
||||
else
|
||||
return getgr_nam_gid(grname);
|
||||
}
|
||||
@@ -40,7 +40,6 @@
|
||||
#include "prototypes.h"
|
||||
#include "defines.h"
|
||||
#include <pwd.h>
|
||||
extern time_t time (time_t *);
|
||||
|
||||
/*
|
||||
* pwd_to_spwd - create entries for new spwd structure
|
||||
@@ -66,7 +65,7 @@ struct spwd *pwd_to_spwd (const struct passwd *pw)
|
||||
*/
|
||||
sp.sp_min = 0;
|
||||
sp.sp_max = (10000L * DAY) / SCALE;
|
||||
sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
|
||||
sp.sp_lstchg = (long) gettime () / SCALE;
|
||||
if (0 == sp.sp_lstchg) {
|
||||
/* Better disable aging than requiring a password
|
||||
* change */
|
||||
|
||||
123
libmisc/salt.c
123
libmisc/salt.c
@@ -22,10 +22,16 @@
|
||||
/* local function prototypes */
|
||||
static void seedRNG (void);
|
||||
static /*@observer@*/const char *gensalt (size_t salt_size);
|
||||
#ifdef USE_SHA_CRYPT
|
||||
#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT)
|
||||
static long shadow_random (long min, long max);
|
||||
#endif /* USE_SHA_CRYPT || USE_BCRYPT */
|
||||
#ifdef USE_SHA_CRYPT
|
||||
static /*@observer@*/const char *SHA_salt_rounds (/*@null@*/int *prefered_rounds);
|
||||
#endif /* USE_SHA_CRYPT */
|
||||
#ifdef USE_BCRYPT
|
||||
static /*@observer@*/const char *gensalt_bcrypt (void);
|
||||
static /*@observer@*/const char *BCRYPT_salt_rounds (/*@null@*/int *prefered_rounds);
|
||||
#endif /* USE_BCRYPT */
|
||||
|
||||
#ifndef HAVE_L64A
|
||||
static /*@observer@*/char *l64a(long value)
|
||||
@@ -79,8 +85,16 @@ static void seedRNG (void)
|
||||
* Add the salt prefix.
|
||||
*/
|
||||
#define MAGNUM(array,ch) (array)[0]=(array)[2]='$',(array)[1]=(ch),(array)[3]='\0'
|
||||
#ifdef USE_BCRYPT
|
||||
/*
|
||||
* Using the Prefix $2a$ to enable an anti-collision safety measure in musl libc.
|
||||
* Negatively affects a subset of passwords containing the '\xff' character,
|
||||
* which is not valid UTF-8 (so "unlikely to cause much annoyance").
|
||||
*/
|
||||
#define BCRYPTMAGNUM(array) (array)[0]=(array)[3]='$',(array)[1]='2',(array)[2]='a',(array)[4]='\0'
|
||||
#endif /* USE_BCRYPT */
|
||||
|
||||
#ifdef USE_SHA_CRYPT
|
||||
#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT)
|
||||
/* It is not clear what is the maximum value of random().
|
||||
* We assume 2^31-1.*/
|
||||
#define RANDOM_MAX 0x7FFFFFFF
|
||||
@@ -105,14 +119,15 @@ static long shadow_random (long min, long max)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif /* USE_SHA_CRYPT || USE_BCRYPT */
|
||||
|
||||
#ifdef USE_SHA_CRYPT
|
||||
/* Default number of rounds if not explicitly specified. */
|
||||
#define ROUNDS_DEFAULT 5000
|
||||
/* Minimum number of rounds. */
|
||||
#define ROUNDS_MIN 1000
|
||||
/* Maximum number of rounds. */
|
||||
#define ROUNDS_MAX 999999999
|
||||
|
||||
/*
|
||||
* Return a salt prefix specifying the rounds number for the SHA crypt methods.
|
||||
*/
|
||||
@@ -165,6 +180,89 @@ static /*@observer@*/const char *SHA_salt_rounds (/*@null@*/int *prefered_rounds
|
||||
}
|
||||
#endif /* USE_SHA_CRYPT */
|
||||
|
||||
#ifdef USE_BCRYPT
|
||||
/* Default number of rounds if not explicitly specified. */
|
||||
#define B_ROUNDS_DEFAULT 13
|
||||
/* Minimum number of rounds. */
|
||||
#define B_ROUNDS_MIN 4
|
||||
/* Maximum number of rounds. */
|
||||
#define B_ROUNDS_MAX 31
|
||||
/*
|
||||
* Return a salt prefix specifying the rounds number for the BCRYPT method.
|
||||
*/
|
||||
static /*@observer@*/const char *BCRYPT_salt_rounds (/*@null@*/int *prefered_rounds)
|
||||
{
|
||||
static char rounds_prefix[4]; /* Max size: 31$ */
|
||||
long rounds;
|
||||
|
||||
if (NULL == prefered_rounds) {
|
||||
long min_rounds = getdef_long ("BCRYPT_MIN_ROUNDS", -1);
|
||||
long max_rounds = getdef_long ("BCRYPT_MAX_ROUNDS", -1);
|
||||
|
||||
if (((-1 == min_rounds) && (-1 == max_rounds)) || (0 == *prefered_rounds)) {
|
||||
rounds = B_ROUNDS_DEFAULT;
|
||||
}
|
||||
else {
|
||||
if (-1 == min_rounds) {
|
||||
min_rounds = max_rounds;
|
||||
}
|
||||
|
||||
if (-1 == max_rounds) {
|
||||
max_rounds = min_rounds;
|
||||
}
|
||||
|
||||
if (min_rounds > max_rounds) {
|
||||
max_rounds = min_rounds;
|
||||
}
|
||||
|
||||
rounds = shadow_random (min_rounds, max_rounds);
|
||||
}
|
||||
} else {
|
||||
rounds = *prefered_rounds;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sanity checks.
|
||||
* Use 19 as an upper bound for now,
|
||||
* because musl doesn't allow rounds >= 20.
|
||||
*/
|
||||
if (rounds < B_ROUNDS_MIN) {
|
||||
rounds = B_ROUNDS_MIN;
|
||||
}
|
||||
|
||||
if (rounds > 19) {
|
||||
/* rounds = B_ROUNDS_MAX; */
|
||||
rounds = 19;
|
||||
}
|
||||
|
||||
(void) snprintf (rounds_prefix, sizeof rounds_prefix,
|
||||
"%2.2ld$", rounds);
|
||||
|
||||
return rounds_prefix;
|
||||
}
|
||||
|
||||
#define BCRYPT_SALT_SIZE 22
|
||||
/*
|
||||
* Generate a 22 character salt string for bcrypt.
|
||||
*/
|
||||
static /*@observer@*/const char *gensalt_bcrypt (void)
|
||||
{
|
||||
static char salt[32];
|
||||
|
||||
salt[0] = '\0';
|
||||
|
||||
seedRNG ();
|
||||
strcat (salt, l64a (random()));
|
||||
do {
|
||||
strcat (salt, l64a (random()));
|
||||
} while (strlen (salt) < BCRYPT_SALT_SIZE);
|
||||
|
||||
salt[BCRYPT_SALT_SIZE] = '\0';
|
||||
|
||||
return salt;
|
||||
}
|
||||
#endif /* USE_BCRYPT */
|
||||
|
||||
/*
|
||||
* Generate salt of size salt_size.
|
||||
*/
|
||||
@@ -230,6 +328,11 @@ static /*@observer@*/const char *gensalt (size_t salt_size)
|
||||
|
||||
if (0 == strcmp (method, "MD5")) {
|
||||
MAGNUM(result, '1');
|
||||
#ifdef USE_BCRYPT
|
||||
} else if (0 == strcmp (method, "BCRYPT")) {
|
||||
BCRYPTMAGNUM(result);
|
||||
strcat(result, BCRYPT_salt_rounds((int *)arg));
|
||||
#endif /* USE_BCRYPT */
|
||||
#ifdef USE_SHA_CRYPT
|
||||
} else if (0 == strcmp (method, "SHA256")) {
|
||||
MAGNUM(result, '5');
|
||||
@@ -252,8 +355,18 @@ static /*@observer@*/const char *gensalt (size_t salt_size)
|
||||
* Concatenate a pseudo random salt.
|
||||
*/
|
||||
assert (sizeof (result) > strlen (result) + salt_len);
|
||||
strncat (result, gensalt (salt_len),
|
||||
sizeof (result) - strlen (result) - 1);
|
||||
#ifdef USE_BCRYPT
|
||||
if (0 == strcmp (method, "BCRYPT")) {
|
||||
strncat (result, gensalt_bcrypt (),
|
||||
sizeof (result) - strlen (result) - 1);
|
||||
return result;
|
||||
} else {
|
||||
#endif /* USE_BCRYPT */
|
||||
strncat (result, gensalt (salt_len),
|
||||
sizeof (result) - strlen (result) - 1);
|
||||
#ifdef USE_BCRYPT
|
||||
}
|
||||
#endif /* USE_BCRYPT */
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
#include "defines.h"
|
||||
#include "prototypes.h"
|
||||
|
||||
#include <utmp.h>
|
||||
|
||||
#ifdef USE_UTMPX
|
||||
#include <utmpx.h>
|
||||
#else
|
||||
#include <utmp.h>
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
@@ -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
|
||||
@@ -97,6 +97,7 @@ static bool is_my_tty (const char *tty)
|
||||
*
|
||||
* Return NULL if no entries exist in utmp for the current process.
|
||||
*/
|
||||
#ifndef USE_UTMPX
|
||||
/*@null@*/ /*@only@*/struct utmp *get_current_utmp (void)
|
||||
{
|
||||
struct utmp *ut;
|
||||
@@ -130,6 +131,36 @@ static bool is_my_tty (const char *tty)
|
||||
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
/*@null@*/ /*@only*/struct utmpx *get_current_utmp(void)
|
||||
{
|
||||
struct utmpx *ut;
|
||||
struct utmpx *ret = NULL;
|
||||
|
||||
setutxent ();
|
||||
|
||||
/* Find the utmpx entry for this PID. */
|
||||
while ((ut = getutxent ()) != NULL) {
|
||||
if ( (ut->ut_pid == getpid ())
|
||||
&& ('\0' != ut->ut_id[0])
|
||||
&& ( (LOGIN_PROCESS == ut->ut_type)
|
||||
|| (USER_PROCESS == ut->ut_type))
|
||||
&& is_my_tty (ut->ut_line)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL != ut) {
|
||||
ret = (struct utmpx *) xmalloc (sizeof (*ret));
|
||||
memcpy (ret, ut, sizeof (*ret));
|
||||
}
|
||||
|
||||
endutxent ();
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef USE_PAM
|
||||
/*
|
||||
@@ -166,6 +197,7 @@ static void updwtmpx (const char *filename, const struct utmpx *utx)
|
||||
#endif /* ! USE_PAM */
|
||||
|
||||
|
||||
#ifndef USE_UTMPX
|
||||
/*
|
||||
* prepare_utmp - prepare an utmp entry so that it can be logged in a
|
||||
* utmp/wtmp file.
|
||||
@@ -325,14 +357,14 @@ int setutmp (struct utmp *ut)
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef USE_UTMPX
|
||||
#else
|
||||
/*
|
||||
* prepare_utmpx - the UTMPX version for prepare_utmp
|
||||
*/
|
||||
/*@only@*/struct utmpx *prepare_utmpx (const char *name,
|
||||
const char *line,
|
||||
const char *host,
|
||||
/*@null@*/const struct utmp *ut)
|
||||
/*@null@*/const struct utmpx *ut)
|
||||
{
|
||||
struct timeval tv;
|
||||
char *hostname = NULL;
|
||||
@@ -398,7 +430,7 @@ int setutmp (struct utmp *ut)
|
||||
struct sockaddr_in *sa =
|
||||
(struct sockaddr_in *) info->ai_addr;
|
||||
#ifdef HAVE_STRUCT_UTMPX_UT_ADDR
|
||||
memcpy (utxent->ut_addr,
|
||||
memcpy (&utxent->ut_addr,
|
||||
&(sa->sin_addr),
|
||||
MIN (sizeof (utxent->ut_addr),
|
||||
sizeof (sa->sin_addr)));
|
||||
|
||||
@@ -41,7 +41,6 @@ man_MANS = \
|
||||
man1/sg.1 \
|
||||
man3/shadow.3 \
|
||||
man5/shadow.5 \
|
||||
man1/su.1 \
|
||||
man5/suauth.5 \
|
||||
man8/useradd.8 \
|
||||
man8/userdel.8 \
|
||||
@@ -54,6 +53,10 @@ man_nopam = \
|
||||
man5/login.access.5 \
|
||||
man5/porttime.5
|
||||
|
||||
if WITH_SU
|
||||
man_MANS += man1/su.1
|
||||
endif
|
||||
|
||||
if !USE_PAM
|
||||
man_MANS += $(man_nopam)
|
||||
endif
|
||||
@@ -137,6 +140,7 @@ login_defs_v = \
|
||||
ISSUE_FILE.xml \
|
||||
KILLCHAR.xml \
|
||||
LASTLOG_ENAB.xml \
|
||||
LASTLOG_UID_MAX.xml \
|
||||
LOGIN_RETRIES.xml \
|
||||
LOGIN_STRING.xml \
|
||||
LOGIN_TIMEOUT.xml \
|
||||
@@ -215,5 +219,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
|
||||
- itstool
|
||||
@@ -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>
|
||||
|
||||
@@ -131,6 +131,12 @@
|
||||
<para>Display help message and exit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-i</option>, <option>--iso8601</option></term>
|
||||
<listitem>
|
||||
<para>When printing dates, use YYYY-MM-DD format.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-I</option>, <option>--inactive</option> <replaceable>INACTIVE</replaceable>
|
||||
@@ -168,7 +174,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 +187,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 +220,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 +241,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
|
||||
|
||||
@@ -5,8 +5,19 @@ config.xml: ../config.xml.in
|
||||
$(MAKE) -C .. config.xml
|
||||
cp ../config.xml $@
|
||||
|
||||
%.xml: ../%.xml ../po/$(LANG).po
|
||||
xml2po --expand-all-entities -l $(LANG) -p ../po/$(LANG).po -o $@ ../$@
|
||||
messages.mo: ../po/$(LANG).po
|
||||
msgfmt ../po/$(LANG).po -o messages.mo
|
||||
|
||||
login.defs.d:
|
||||
ln -sf ../login.defs.d login.defs.d
|
||||
|
||||
%.xml: ../%.xml messages.mo login.defs.d
|
||||
if grep -q SHADOW-CONFIG-HERE $< ; then \
|
||||
sed -e 's/^<!-- SHADOW-CONFIG-HERE -->/<!ENTITY % config SYSTEM "config.xml">%config;/' $< > $@; \
|
||||
else \
|
||||
sed -e 's/^\(<!DOCTYPE .*docbookx.dtd"\)>/\1 [<!ENTITY % config SYSTEM "config.xml">%config;]>/' $< > $@; \
|
||||
fi
|
||||
itstool -d -l $(LANG) -m messages.mo -o . $@
|
||||
sed -i 's:\(^<refentry .*\)>:\1 lang="$(LANG)">:' $@
|
||||
|
||||
include ../generate_mans.mak
|
||||
@@ -14,7 +25,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
|
||||
CLEANFILES = messages.mo login.defs.d $(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>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
-->
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY LASTLOG_UID_MAX SYSTEM "login.defs.d/LASTLOG_UID_MAX.xml">
|
||||
<!-- SHADOW-CONFIG-HERE -->
|
||||
]>
|
||||
<refentry id='lastlog.8'>
|
||||
@@ -200,6 +201,18 @@
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id='configuration'>
|
||||
<title>CONFIGURATION</title>
|
||||
<para>
|
||||
The following configuration variables in
|
||||
<filename>/etc/login.defs</filename> change the behavior of this
|
||||
tool:
|
||||
</para>
|
||||
<variablelist>
|
||||
&LASTLOG_UID_MAX;
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id='files'>
|
||||
<title>FILES</title>
|
||||
<variablelist>
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<!ENTITY ISSUE_FILE SYSTEM "login.defs.d/ISSUE_FILE.xml">
|
||||
<!ENTITY KILLCHAR SYSTEM "login.defs.d/KILLCHAR.xml">
|
||||
<!ENTITY LASTLOG_ENAB SYSTEM "login.defs.d/LASTLOG_ENAB.xml">
|
||||
<!ENTITY LASTLOG_UID_MAX SYSTEM "login.defs.d/LASTLOG_UID_MAX.xml">
|
||||
<!ENTITY LOG_OK_LOGINS SYSTEM "login.defs.d/LOG_OK_LOGINS.xml">
|
||||
<!ENTITY LOG_UNKFAIL_ENAB SYSTEM "login.defs.d/LOG_UNKFAIL_ENAB.xml">
|
||||
<!ENTITY LOGIN_RETRIES SYSTEM "login.defs.d/LOGIN_RETRIES.xml">
|
||||
@@ -188,6 +189,7 @@
|
||||
&ISSUE_FILE;
|
||||
&KILLCHAR;
|
||||
&LASTLOG_ENAB;
|
||||
&LASTLOG_UID_MAX;
|
||||
&LOG_OK_LOGINS;
|
||||
&LOG_UNKFAIL_ENAB;
|
||||
&LOGIN_RETRIES;
|
||||
@@ -349,7 +351,12 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<!-- id: no variables -->
|
||||
<!-- lastlog: no variables -->
|
||||
<varlistentry>
|
||||
<term>lastlog</term>
|
||||
<listitem>
|
||||
<para>LASTLOG_UID_MAX</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>login</term>
|
||||
<listitem>
|
||||
@@ -365,7 +372,7 @@
|
||||
HUSHLOGIN_FILE
|
||||
<phrase condition="no_pam">ISSUE_FILE</phrase>
|
||||
KILLCHAR
|
||||
<phrase condition="no_pam">LASTLOG_ENAB</phrase>
|
||||
<phrase condition="no_pam">LASTLOG_ENAB LASTLOG_UID_MAX</phrase>
|
||||
LOGIN_RETRIES
|
||||
<phrase condition="no_pam">LOGIN_STRING</phrase>
|
||||
LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB
|
||||
@@ -474,6 +481,7 @@
|
||||
<para>
|
||||
CREATE_HOME
|
||||
GID_MAX GID_MIN
|
||||
LASTLOG_UID_MAX
|
||||
MAIL_DIR MAX_MEMBERS_PER_GROUP
|
||||
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
|
||||
SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN
|
||||
@@ -498,6 +506,7 @@
|
||||
<term>usermod</term>
|
||||
<listitem>
|
||||
<para>
|
||||
LASTLOG_UID_MAX
|
||||
MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP
|
||||
<phrase condition="tcb">TCB_SYMLINKS USE_TCB</phrase>
|
||||
</para>
|
||||
|
||||
46
man/login.defs.d/LASTLOG_UID_MAX.xml
Normal file
46
man/login.defs.d/LASTLOG_UID_MAX.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<!--
|
||||
Copyright (c) 1991 - 1993, Julianne Frances Haugh
|
||||
Copyright (c) 1991 - 1993, Chip Rosenthal
|
||||
Copyright (c) 2007 - 2008, Nicolas François
|
||||
Copyright (c) 2018, Red Hat, inc.
|
||||
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.
|
||||
-->
|
||||
<varlistentry>
|
||||
<term><option>LASTLOG_UID_MAX</option> (number)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Highest user ID number for which the lastlog entries should be
|
||||
updated. As higher user IDs are usually tracked by remote user
|
||||
identity and authentication services there is no need to create
|
||||
a huge sparse lastlog file for them.
|
||||
</para>
|
||||
<para>
|
||||
No <option>LASTLOG_UID_MAX</option> option present in the configuration
|
||||
means that there is no user ID limit for writing lastlog entries.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -42,7 +42,7 @@
|
||||
<para>
|
||||
The default values for <option>SUB_GID_MIN</option>,
|
||||
<option>SUB_GID_MAX</option>, <option>SUB_GID_COUNT</option>
|
||||
are respectively 100000, 600100000 and 10000.
|
||||
are respectively 100000, 600100000 and 65536.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<para>
|
||||
The default values for <option>SUB_UID_MIN</option>,
|
||||
<option>SUB_UID_MAX</option>, <option>SUB_UID_COUNT</option>
|
||||
are respectively 100000, 600100000 and 10000.
|
||||
are respectively 100000, 600100000 and 65536.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
@@ -266,6 +266,18 @@
|
||||
<para>
|
||||
The options which apply to the <command>newusers</command> command are:
|
||||
</para>
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>--badname</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allow names that do not conform to standards.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<variablelist remap='IP' condition="no_pam">
|
||||
<varlistentry>
|
||||
<term><option>-c</option>, <option>--crypt-method</option></term>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -98,24 +98,43 @@
|
||||
</itemizedlist>
|
||||
|
||||
<para>
|
||||
The encrypted password field may be blank, in which case no password
|
||||
is required to authenticate as the specified login name. However,
|
||||
some applications which read the <filename>/etc/passwd</filename> file
|
||||
may decide not to permit <emphasis>any</emphasis> access at all if the
|
||||
<emphasis>password</emphasis> field is blank. If the
|
||||
<emphasis>password</emphasis> field is a lower-case <quote>x</quote>,
|
||||
then the encrypted password is actually stored in the
|
||||
If the <emphasis>password</emphasis> field is a lower-case
|
||||
<quote>x</quote>, then the encrypted password is actually stored in the
|
||||
<citerefentry><refentrytitle>shadow</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> file instead; there
|
||||
<emphasis>must</emphasis> be a corresponding line in the
|
||||
<filename>/etc/shadow</filename> file, or else the user account is invalid.
|
||||
If the <emphasis>password</emphasis> field is any other string, then
|
||||
it will be treated as an encrypted password, as specified by
|
||||
<citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry>.
|
||||
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The encrypted <emphasis>password</emphasis> field may be empty,
|
||||
in which case no password is required to authenticate as the
|
||||
specified login name. However, some applications which read the
|
||||
<filename>/etc/passwd</filename> file may decide not to permit
|
||||
<emphasis>any</emphasis> access at all if the
|
||||
<emphasis>password</emphasis> field is blank.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A <emphasis>password</emphasis> field which starts with an
|
||||
exclamation mark means that the password is locked. The
|
||||
remaining characters on the line represent the
|
||||
<emphasis>password</emphasis> field before the password was
|
||||
locked.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Refer to <citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry> for details on how
|
||||
this string is interpreted.
|
||||
</para>
|
||||
<para>
|
||||
If the password field contains some string that is not a valid
|
||||
result of <citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry>, for instance ! or *,
|
||||
the user will not be able to use a unix password to log in
|
||||
(but the user may log in the system by other means).
|
||||
</para>
|
||||
<para>
|
||||
The comment field is used by various system utilities, such as
|
||||
<citerefentry><refentrytitle>finger</refentrytitle>
|
||||
|
||||
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, "
|
||||
|
||||
1174
man/po/fr.po
1174
man/po/fr.po
File diff suppressed because it is too large
Load Diff
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> 选项,用来让非特权用户觉得自己的密码或账户何时过期。"
|
||||
|
||||
@@ -182,6 +182,16 @@
|
||||
The options which apply to the <command>pwck</command> command are:
|
||||
</para>
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>--badname</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allow names that do not conform to standards.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option>, <option>--help</option></term>
|
||||
<listitem>
|
||||
|
||||
@@ -95,18 +95,6 @@
|
||||
<varlistentry>
|
||||
<term><emphasis role="bold">encrypted password</emphasis></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Refer to <citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry> for details on how
|
||||
this string is interpreted.
|
||||
</para>
|
||||
<para>
|
||||
If the password field contains some string that is not a valid
|
||||
result of <citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry>, for instance ! or *,
|
||||
the user will not be able to use a unix password to log in
|
||||
(but the user may log in the system by other means).
|
||||
</para>
|
||||
<para>
|
||||
This field may be empty, in which case no passwords are
|
||||
required to authenticate as the specified login name.
|
||||
@@ -120,6 +108,18 @@
|
||||
line represent the password field before the password was
|
||||
locked.
|
||||
</para>
|
||||
<para>
|
||||
Refer to <citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry> for details on how
|
||||
this string is interpreted.
|
||||
</para>
|
||||
<para>
|
||||
If the password field contains some string that is not a valid
|
||||
result of <citerefentry><refentrytitle>crypt</refentrytitle>
|
||||
<manvolnum>3</manvolnum></citerefentry>, for instance ! or *,
|
||||
the user will not be able to use a unix password to log in
|
||||
(but the user may log in the system by other means).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
||||
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
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY CREATE_HOME SYSTEM "login.defs.d/CREATE_HOME.xml">
|
||||
<!ENTITY GID_MAX SYSTEM "login.defs.d/GID_MAX.xml">
|
||||
<!ENTITY LASTLOG_UID_MAX SYSTEM "login.defs.d/LASTLOG_UID_MAX.xml">
|
||||
<!ENTITY MAIL_DIR SYSTEM "login.defs.d/MAIL_DIR.xml">
|
||||
<!ENTITY MAX_MEMBERS_PER_GROUP SYSTEM "login.defs.d/MAX_MEMBERS_PER_GROUP.xml">
|
||||
<!ENTITY PASS_MAX_DAYS SYSTEM "login.defs.d/PASS_MAX_DAYS.xml">
|
||||
@@ -125,6 +126,16 @@
|
||||
<para>The options which apply to the <command>useradd</command> command are:
|
||||
</para>
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>--badname</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allow names that do not conform to standards.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-b</option>, <option>--base-dir</option> <replaceable>BASE_DIR</replaceable>
|
||||
@@ -453,6 +464,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>
|
||||
@@ -653,6 +681,7 @@
|
||||
<variablelist>
|
||||
&CREATE_HOME;
|
||||
&GID_MAX; <!-- documents also GID_MIN -->
|
||||
&LASTLOG_UID_MAX;
|
||||
&MAIL_DIR;
|
||||
&MAX_MEMBERS_PER_GROUP;
|
||||
&PASS_MAX_DAYS;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
-->
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||||
<!ENTITY LASTLOG_UID_MAX SYSTEM "login.defs.d/LASTLOG_UID_MAX.xml">
|
||||
<!ENTITY MAIL_DIR SYSTEM "login.defs.d/MAIL_DIR.xml">
|
||||
<!ENTITY MAX_MEMBERS_PER_GROUP SYSTEM "login.defs.d/MAX_MEMBERS_PER_GROUP.xml">
|
||||
<!ENTITY SUB_GID_COUNT SYSTEM "login.defs.d/SUB_GID_COUNT.xml">
|
||||
@@ -107,6 +108,26 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-b</option>, <option>--badnames</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allow names that do not conform to standards.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-b</option>, <option>--badnames</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Allow names that do not conform to standards.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-c</option>, <option>--comment</option> <replaceable>COMMENT</replaceable>
|
||||
@@ -319,6 +340,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 +420,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 +438,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 +446,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 +458,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 +476,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 +484,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>
|
||||
@@ -500,6 +538,7 @@
|
||||
tool:
|
||||
</para>
|
||||
<variablelist>
|
||||
&LASTLOG_UID_MAX;
|
||||
&MAIL_DIR; <!-- documents also MAIL_FILE -->
|
||||
&MAX_MEMBERS_PER_GROUP;
|
||||
&SUB_GID_COUNT; <!-- documents also SUB_GID_MAX and SUB_GID_MIN -->
|
||||
|
||||
@@ -45,10 +45,13 @@ libmisc/entry.c
|
||||
libmisc/env.c
|
||||
libmisc/failure.c
|
||||
libmisc/find_new_gid.c
|
||||
libmisc/find_new_sub_gids.c
|
||||
libmisc/find_new_sub_uids.c
|
||||
libmisc/find_new_uid.c
|
||||
libmisc/getgr_nam_gid.c
|
||||
libmisc/getrange.c
|
||||
libmisc/hushed.c
|
||||
libmisc/idmapping.c
|
||||
libmisc/isexpired.c
|
||||
libmisc/limits.c
|
||||
libmisc/list.c
|
||||
@@ -59,6 +62,7 @@ libmisc/motd.c
|
||||
libmisc/myname.c
|
||||
libmisc/obscure.c
|
||||
libmisc/pam_pass.c
|
||||
libmisc/pam_pass_non_interactive.c
|
||||
libmisc/pwd2spwd.c
|
||||
libmisc/pwdcheck.c
|
||||
libmisc/pwd_init.c
|
||||
@@ -75,6 +79,7 @@ libmisc/sulog.c
|
||||
libmisc/ttytype.c
|
||||
libmisc/tz.c
|
||||
libmisc/ulimit.c
|
||||
libmisc/user_busy.c
|
||||
libmisc/utmp.c
|
||||
libmisc/valid.c
|
||||
libmisc/xgetXXbyYY.c
|
||||
@@ -101,7 +106,9 @@ src/lastlog.c
|
||||
src/login.c
|
||||
src/login_nopam.c
|
||||
src/logoutd.c
|
||||
src/newgidmap.c
|
||||
src/newgrp.c
|
||||
src/newuidmap.c
|
||||
src/newusers.c
|
||||
src/passwd.c
|
||||
src/pwck.c
|
||||
|
||||
22
po/bs.po
22
po/bs.po
@@ -113,12 +113,10 @@ msgid "Cannot init SELinux management\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "Cannot create SELinux user key\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "Cannot verify the SELinux user\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -151,7 +149,6 @@ msgid "%s: out of memory\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot stat %s: %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -204,7 +201,6 @@ msgid "%s: Cannot change owners of %s: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot lstat %s: %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -223,7 +219,6 @@ msgid "%s: mkdir: %s: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot open %s: %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -485,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 ""
|
||||
|
||||
@@ -575,12 +570,10 @@ msgid "%s: PAM: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Try again later\n"
|
||||
msgid "%s: cannot lock %s; try again later.\n"
|
||||
msgstr "%s: Pokušajte ponovo kasnije\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: cannot open %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1014,7 +1007,6 @@ msgid "%s: -K requires KEY=VALUE\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s exists\n"
|
||||
msgid "%s: group '%s' already exists\n"
|
||||
msgstr "%s: grupa %s postoji\n"
|
||||
|
||||
@@ -1023,7 +1015,6 @@ msgid "%s: GID '%lu' already exists\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1222,7 +1213,6 @@ msgid "%s: no changes\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: cannot delete %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1347,7 +1337,6 @@ msgid "Login incorrect"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "Cannot find user (%s)\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1601,7 +1590,6 @@ msgid "%s: password changed.\n"
|
||||
msgstr "Šifra:"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Password Expiration Warning"
|
||||
msgid "%s: password expiry information changed.\n"
|
||||
msgstr "Upozorenje o isteku šifre"
|
||||
|
||||
@@ -1642,7 +1630,6 @@ msgid "invalid user ID '%lu'\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Adding user %s to group %s\n"
|
||||
msgid "user '%s': no group %lu\n"
|
||||
msgstr "Dodajem korisnika %s grupi %s\n"
|
||||
|
||||
@@ -1667,7 +1654,6 @@ msgid "failed to create tcb directory for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: cannot lock %s.\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1716,7 +1702,6 @@ msgid "Please enter your OWN password as authentication.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot fork user shell\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1797,7 +1782,6 @@ msgid "%s: Cannot drop the controlling terminal\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "Cannot execute %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -2093,7 +2077,6 @@ msgid "%s: Can't allocate memory, tcb entry for %s not removed.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot drop privileges: %s\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -2150,7 +2133,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"
|
||||
@@ -2214,7 +2197,6 @@ msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
|
||||
36
po/ca.po
36
po/ca.po
@@ -46,7 +46,6 @@ msgid "%s: nscd did not terminate normally (signal %d)\n"
|
||||
msgstr "%s: nscd no ha acabat correctament (senyal %d)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
msgid "%s: nscd exited with status %d\n"
|
||||
msgstr "%s: «nscd» ha sortit amb l'estat %d"
|
||||
|
||||
@@ -430,7 +429,6 @@ msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: no es pot accedir al directori «chroot» %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: no es pot accedir al directori «chroot» %s: %s\n"
|
||||
|
||||
@@ -518,8 +516,9 @@ msgstr ""
|
||||
" -m, --mindays DIES_MÍN estableix el número mínim de dies abans\n"
|
||||
" del canvi de contrasenya a DIES_MÍN\n"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
" -M, --maxdays DIES_MÀX estableix el número màxim de dies abans\n"
|
||||
@@ -808,7 +807,6 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: línia %d: manca la nova contrasenya\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: Error en escriure %s: %s\n"
|
||||
|
||||
@@ -1131,8 +1129,6 @@ msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: no es pot configurar el servei de neteja.\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"
|
||||
@@ -1371,8 +1367,6 @@ msgstr ""
|
||||
" antics que DIES\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"
|
||||
@@ -1381,8 +1375,6 @@ msgstr ""
|
||||
"els usuaris\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"
|
||||
@@ -1412,12 +1404,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**No ha entrat mai**"
|
||||
|
||||
#, fuzzy, 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: No s'ha pogut obtenir l'entrada de la UID %lu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update password file\n"
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: no es pot actualitzar el fitxer de contrasenyes\n"
|
||||
|
||||
@@ -1551,7 +1541,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Forma d'ús: sg grup [[-c] ordre]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: Error en escriure %s: %s\n"
|
||||
|
||||
@@ -1625,17 +1614,14 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: línia %d: no es pot actualitzar l'entrada\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: no es pot generar l'usuari\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update group file\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: no es pot actualitzar el fitxer de grups\n"
|
||||
|
||||
@@ -2051,7 +2037,6 @@ msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: línia massa llarga a %s: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: no es pot generar l'enllaç simbòlic %s: %s\n"
|
||||
|
||||
@@ -2226,7 +2211,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: ha fallat el restabliment del darrer registre de UID %lu: %s\n"
|
||||
|
||||
#, fuzzy, 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: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
@@ -2274,12 +2258,10 @@ msgid "%s: can't create group\n"
|
||||
msgstr "%s: no es pot generar el grup\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: no es pot generar l'usuari\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: no es pot generar el grup\n"
|
||||
|
||||
@@ -2333,7 +2315,6 @@ msgstr ""
|
||||
"usuari.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: no es pot eliminar l'entrada «%s» de %s\n"
|
||||
|
||||
@@ -2423,7 +2404,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"
|
||||
@@ -2492,12 +2473,10 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: l'usuari «%s» ja existeix a %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: la data «%s» no és vàlida\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: la data «%s» no és vàlida\n"
|
||||
|
||||
@@ -2518,7 +2497,6 @@ msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: UID '%lu' ja existeix\n"
|
||||
|
||||
#, fuzzy, 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 no està autoritzat per canviar la contrasenya de %s\n"
|
||||
|
||||
@@ -2570,22 +2548,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "no s'ha pogut reanomenar la bústia de correu"
|
||||
|
||||
#, fuzzy, 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: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, fuzzy, 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: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, fuzzy, 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: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, fuzzy, 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: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
@@ -2645,12 +2619,10 @@ msgid "Couldn't make backup"
|
||||
msgstr "No s'ha pogut fer una còpia de seguretat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: «nscd» ha sortit amb l'estat %d"
|
||||
|
||||
@@ -2968,7 +2940,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"
|
||||
|
||||
34
po/da.po
34
po/da.po
@@ -57,7 +57,6 @@ msgid "%s: nscd did not terminate normally (signal %d)\n"
|
||||
msgstr "%s: nscd afsluttedes ikke normalt (signal %d)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
msgid "%s: nscd exited with status %d\n"
|
||||
msgstr "%s: nscd afsluttede med status %d"
|
||||
|
||||
@@ -436,7 +435,6 @@ msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n"
|
||||
|
||||
@@ -519,8 +517,9 @@ msgstr ""
|
||||
" -m, --mindays MIN_DAGE sæt minimalt antal dage inden\n"
|
||||
" adgangskodeændring til MIN_DAGE\n"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
" -M, --maxdays MAKS_DAGE sæt maksimalt antal dage inden\n"
|
||||
@@ -798,7 +797,6 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: Linje %d: Mangler ny adgangskode\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: Kunne ikke skrive %s: %s\n"
|
||||
|
||||
@@ -1104,8 +1102,6 @@ msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: Kan ikke opsætte tjenesten cleanup.\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"
|
||||
@@ -1343,16 +1339,12 @@ msgstr ""
|
||||
" end DAGE\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 vis faillog-poster for alle brugere\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"
|
||||
@@ -1381,12 +1373,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**Har aldrig logget på**"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke indhente punktet for UID %lu\n"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke nulstille lastlog-punktet for UID %lu: %s\n"
|
||||
|
||||
@@ -1519,7 +1509,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Brug: sg gruppe [[-c] kommando]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: Kunne ikke skrive %s: %s\n"
|
||||
|
||||
@@ -1590,17 +1579,14 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: Linje %d: Kan ikke opdatere punktet\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: Kunne ikke forberede det nye %s-punkt »%s«\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: Kan ikke oprette bruger\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: Kan ikke oprette gruppe\n"
|
||||
|
||||
@@ -2007,7 +1993,6 @@ msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: Linje for lang i %s: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: Kan ikke oprette symbolsk henvisning %s: %s\n"
|
||||
|
||||
@@ -2180,7 +2165,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: Kunne ikke nulstille lastlog-punktet for UID %lu: %s\n"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke forberede det nye %s-punkt »%s«\n"
|
||||
|
||||
@@ -2228,12 +2212,10 @@ msgid "%s: can't create group\n"
|
||||
msgstr "%s: Kan ikke oprette gruppe\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: Kan ikke oprette bruger\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: Kan ikke oprette gruppe\n"
|
||||
|
||||
@@ -2284,7 +2266,6 @@ msgstr ""
|
||||
"%s: Gruppe %s er den primære gruppe for en anden bruger og fjernes ikke.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: Kan ikke fjerne punkt »%s« fra %s\n"
|
||||
|
||||
@@ -2370,7 +2351,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"
|
||||
@@ -2443,12 +2424,10 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: Brugeren »%s« findes allerede i %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: Ugyldig dato »%s«\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: Ugyldig dato »%s«\n"
|
||||
|
||||
@@ -2469,7 +2448,6 @@ msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: UID »%lu« findes allerede\n"
|
||||
|
||||
#, fuzzy, 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 er ikke godkendt til at ændre adgangskoden på %s\n"
|
||||
|
||||
@@ -2518,22 +2496,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "kunne ikke omdøbe postkasse"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke forberede det nye %s-punkt »%s«\n"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke forberede det nye %s-punkt »%s«\n"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke forberede det nye %s-punkt »%s«\n"
|
||||
|
||||
#, fuzzy, 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: Kunne ikke forberede det nye %s-punkt »%s«\n"
|
||||
|
||||
@@ -2591,12 +2565,10 @@ msgid "Couldn't make backup"
|
||||
msgstr "Kunne ikke lave sikkerhedskopi"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: nscd afsluttede med status %d"
|
||||
|
||||
|
||||
698
po/de.po
698
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: "
|
||||
@@ -430,7 +429,6 @@ msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n"
|
||||
|
||||
@@ -515,8 +513,9 @@ msgstr ""
|
||||
" -m, --mindays MIN_TAGE Minimale Anzahl der Tage vor\n"
|
||||
" Passwortänderung auf MIN_TAGE setzen\n"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
" -M, --maxdays MAX_TAGE Maximale Anzahl der Tage vor\n"
|
||||
@@ -803,7 +802,6 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: Zeile %d: Neues Passwort fehlt\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: Schreiben von %s fehlgeschlagen: %s\n"
|
||||
|
||||
@@ -1121,8 +1119,6 @@ msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: Ihr Benutzername konnte nicht bestimmt werden.\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"
|
||||
@@ -1367,8 +1363,6 @@ msgstr ""
|
||||
" als TAGE sind\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"
|
||||
@@ -1377,8 +1371,6 @@ msgstr ""
|
||||
" für alle Benutzer anzeigen\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"
|
||||
@@ -1409,12 +1401,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**Noch nie angemeldet**"
|
||||
|
||||
#, fuzzy, 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: Auslesen des Eintrags für UID %lu fehlgeschlagen\n"
|
||||
|
||||
#, fuzzy, 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: Zurücksetzen des lastlog-Eintrags für UID %lu fehlgeschlagen: %s\n"
|
||||
|
||||
@@ -1549,7 +1539,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Aufruf: sg Gruppe [[-c] Befehl]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to write %s: %s\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: Schreiben von %s fehlgeschlagen: %s\n"
|
||||
|
||||
@@ -1622,17 +1611,14 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: Zeile %d: Eintrag kann nicht aktualisiert werden.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: Benutzer kann nicht erstellt werden\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: Gruppe kann nicht erzeugt werden\n"
|
||||
|
||||
@@ -2044,10 +2030,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"
|
||||
@@ -2230,7 +2215,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: Zurücksetzen des lastlog-Eintrags für UID %lu fehlgeschlagen: %s\n"
|
||||
|
||||
#, fuzzy, 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: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n"
|
||||
|
||||
@@ -2278,12 +2262,10 @@ msgid "%s: can't create group\n"
|
||||
msgstr "%s: Gruppe kann nicht erzeugt werden\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: Benutzer kann nicht erstellt werden\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: Gruppe kann nicht erzeugt werden\n"
|
||||
|
||||
@@ -2339,7 +2321,6 @@ msgstr ""
|
||||
"nicht entfernt.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: Eintrag »%s« konnte nicht aus %s entfernt werden.\n"
|
||||
|
||||
@@ -2427,7 +2408,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"
|
||||
@@ -2502,12 +2483,10 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: Benutzer »%s« existiert bereits in %s.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: Ungültiges Datum »%s«\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: Ungültiges Datum »%s«\n"
|
||||
|
||||
@@ -2528,7 +2507,6 @@ msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: UID »%lu« existiert bereits\n"
|
||||
|
||||
#, fuzzy, 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 ist nicht berechtigt, das Passwort von %s zu ändern.\n"
|
||||
|
||||
@@ -2580,22 +2558,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "Fehler beim Umbenennen von mailbox"
|
||||
|
||||
#, fuzzy, 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: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n"
|
||||
|
||||
#, fuzzy, 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: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n"
|
||||
|
||||
#, fuzzy, 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: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n"
|
||||
|
||||
#, fuzzy, 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: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n"
|
||||
|
||||
@@ -2654,14 +2628,12 @@ msgid "Couldn't make backup"
|
||||
msgstr "Sicherung konnte nicht erstellt werden"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
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 +2652,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 +2663,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"
|
||||
|
||||
154
po/dz.po
154
po/dz.po
@@ -88,7 +88,6 @@ msgid "Could not set serange for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Could not allocate space for config info.\n"
|
||||
msgid "Could not set sename for %s\n"
|
||||
msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོན་ལུ་ བར་སྟོང་སྤྲོད་མ་ཚུགས།\n"
|
||||
|
||||
@@ -97,7 +96,6 @@ msgid "Could not modify login mapping for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Changing the aging information for %s\n"
|
||||
msgid "Cannot create SELinux login mapping for %s\n"
|
||||
msgstr "%s གི་དོན་ལུ་ རྒས་པའི་བརྡ་དོན་བསྒྱུར་བཅོས་འབད་དོ།\n"
|
||||
|
||||
@@ -118,12 +116,10 @@ msgid "Cannot init SELinux management\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "Cannot create SELinux user key\n"
|
||||
msgstr "%s: ཁྱོད་ཀྱི་ལག་ལེན་པའི་མིང་ གཏན་འབེབས་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: cannot find user %s\n"
|
||||
msgid "Cannot verify the SELinux user\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d:ལག་ལེན་པ་ %sའཚོལ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -156,17 +152,14 @@ msgid "%s: out of memory\n"
|
||||
msgstr "%s: དྲན་ཚད་ལས་བརྒལ་བ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot update file %s\n"
|
||||
msgid "%s: Cannot stat %s: %s\n"
|
||||
msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home directory '%s'\n"
|
||||
msgid "%s: %s is neither a directory, nor a symlink.\n"
|
||||
msgstr "%s: ནུས་མེད་ཁྱིམ་གྱི་སྣོད་ཐོ་ '%s'།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot read symbolic link %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
@@ -175,57 +168,46 @@ msgid "%s: Suspiciously long symlink: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create directory %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot change owner of %s: %s\n"
|
||||
msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot change mode of %s: %s\n"
|
||||
msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s"
|
||||
msgid "%s: unlink: %s: %s\n"
|
||||
msgstr "%s: བསྐྱར་མིང་བཏགས་:%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove directory %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot rename %s to %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot remove %s: %s\n"
|
||||
msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot change owners of %s: %s\n"
|
||||
msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot update file %s\n"
|
||||
msgid "%s: Cannot lstat %s: %s\n"
|
||||
msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update shadow file\n"
|
||||
msgid "%s: Warning, user %s has no tcb shadow file.\n"
|
||||
msgstr "%s: གྱིབ་མའི་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -236,12 +218,10 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s"
|
||||
msgid "%s: mkdir: %s: %s\n"
|
||||
msgstr "%s: བསྐྱར་མིང་བཏགས་:%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: Cannot open %s: %s\n"
|
||||
msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -284,17 +264,14 @@ msgid "Cannot open audit interface - aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Unable to change tty %s"
|
||||
msgid "Unable to change owner or mode of tty stdin: %s"
|
||||
msgstr "ཊི་ཊི་ཝའི་ %s བསྒྱུར་བཅོས་འབད་མ་ཚུགས།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: fields too long\n"
|
||||
msgid "%s: failed to unlock %s\n"
|
||||
msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: "
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
@@ -335,7 +312,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "failed to change mailbox owner"
|
||||
msgid "%s: failed to allocate memory: %s\n"
|
||||
msgstr "ཡིག་སྒྲོམ་བདག་པོ་སོར་ནི་ལུ་ འཐུས་ཤོར་བྱུང་ཡོདཔ།"
|
||||
|
||||
@@ -411,7 +387,6 @@ msgid "passwd: %s\n"
|
||||
msgstr "ཆོག་ཡིག་: %s\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Password changed."
|
||||
msgid "passwd: password unchanged\n"
|
||||
msgstr "ཆོག་ཡིག་སོར་ཡོདཔ།"
|
||||
|
||||
@@ -435,22 +410,18 @@ msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home phone: '%s'\n"
|
||||
msgid "%s: invalid chroot path '%s'\n"
|
||||
msgstr "%s: ནུས་མེད་ཀྱི་ ཁྱིམ་གྱི་བརྒྱུད་འཕྲིན་: '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
@@ -483,12 +454,10 @@ msgid "Unable to determine your tty name."
|
||||
msgstr "ཁྱོད་ཀྱི་ཊི་ཊི་ཝའི་མིང་ གཏན་འབེབས་བཟོ་མ་ཚུགས།"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "No\n"
|
||||
msgid "No"
|
||||
msgstr "མེན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] LOGIN\n"
|
||||
"\n"
|
||||
@@ -521,7 +490,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 ""
|
||||
|
||||
@@ -604,17 +573,14 @@ msgid "%s: Cannot determine your user name.\n"
|
||||
msgstr "%s: ཁྱོད་ཀྱི་ལག་ལེན་པའི་མིང་ གཏན་འབེབས་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: PAM: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't lock files, try again later\n"
|
||||
msgid "%s: cannot lock %s; try again later.\n"
|
||||
msgstr "%s:ཡིག་སྣོད་ཚུ་ལྡེ་མིག་བརྐྱབ་མི་ཚུགས་ དོ་རུང་ཤུལ་ལས་འབད་རྩོལ་བསྐྱེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: cannot open %s\n"
|
||||
msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -623,7 +589,6 @@ msgid "%s: failure while writing changes to %s\n"
|
||||
msgstr "%s: ཁ་སྤེལ་བ་འཐུས་ཤོར་:%s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -644,7 +609,6 @@ msgid "%s: error changing fields\n"
|
||||
msgstr "%s: ས་སྒོ་ཚུ་བསྒྱུར་བཅོས་འབད་བའི་བསྒང་ལུ་ འཛོལ་བ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [LOGIN]\n"
|
||||
"\n"
|
||||
@@ -673,7 +637,6 @@ msgid "Full Name"
|
||||
msgstr "མིང་ཆ་ཚང་།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "\t%s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
@@ -717,7 +680,6 @@ msgid "%s: invalid home phone: '%s'\n"
|
||||
msgstr "%s: ནུས་མེད་ཀྱི་ ཁྱིམ་གྱི་བརྒྱུད་འཕྲིན་: '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: '%s' contains illegal characters\n"
|
||||
msgid "%s: '%s' contains non-ASCII characters\n"
|
||||
msgstr "%s: '%s' ནང་ལུ་ ཁྲིམས་འགལ་ཡིག་ཆ་ཚུ་ཡོད།\n"
|
||||
|
||||
@@ -746,7 +708,6 @@ msgid "%s: fields too long\n"
|
||||
msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options]\n"
|
||||
"\n"
|
||||
@@ -791,17 +752,14 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: ཆོག་ཡིག་གསརཔ་ བརླག་སྟོར་ཞུགས་པ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s does not exist\n"
|
||||
msgid "%s: line %d: group '%s' does not exist\n"
|
||||
msgstr "%s: སྡེ་ཚན་ %sམེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: can't update entry\n"
|
||||
msgid "%s: line %d: failed to prepare the new %s entry '%s'\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: ཐོ་བཀོད་དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -824,7 +782,6 @@ msgid "Login Shell"
|
||||
msgstr "ནང་བསྐྱོད་ཀྱི་ཤལ།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "You may not change the shell for %s.\n"
|
||||
msgid "You may not change the shell for '%s'.\n"
|
||||
msgstr "ཁྱོད་ཀྱིས་ %sགི་དོན་ལུ་ ཤལ་བསྒྱུར་བཅོས་མི་འབདཝ་འོང་།\n"
|
||||
|
||||
@@ -837,17 +794,14 @@ msgid "%s: Invalid entry: %s\n"
|
||||
msgstr "%s: ནུས་མེད་ཀྱི་ཐོ་བཀོད་:%s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s is an invalid shell.\n"
|
||||
msgid "%s: %s is an invalid shell\n"
|
||||
msgstr "%s འདི་ནུས་མེད་ཀྱི་ཤལ་ཨིན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s does not exist\n"
|
||||
msgid "%s: Warning: %s does not exist\n"
|
||||
msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: %s not owned by %s\n"
|
||||
msgid "%s: Warning: %s is not executable\n"
|
||||
msgstr "%s: ཉེན་བརྡ་: %s འདི་ %s གིས་ བདག་དབང་བཟུངམ་མེན།\n"
|
||||
|
||||
@@ -865,7 +819,6 @@ msgid "%s: options %s and %s conflict\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "lastlog: unexpected argument: %s\n"
|
||||
msgid "%s: unexpected argument: %s\n"
|
||||
msgstr "lastlog: རེ་བ་མ་བསྐྱེད་པའི་སྒྲུབ་རྟགས་:%s\n"
|
||||
|
||||
@@ -896,7 +849,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to get the entry for UID %lu\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
@@ -904,7 +856,6 @@ msgid "Login Failures Maximum Latest On\n"
|
||||
msgstr "ནང་བསྐྱོད་ མང་མཐའི་མཇུག་མཐའ་འཐུས་ཤོར་ ཨཱོན། \n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " [%lds left]"
|
||||
msgid " [%lus left]"
|
||||
msgstr " [%lds གཡོན་]"
|
||||
|
||||
@@ -913,17 +864,14 @@ msgid " [%lds lock]"
|
||||
msgstr " [%lds ལྡེ་མིག་]"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to reset fail count for UID %lu\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Failed to set max for UID %lu\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to set locktime for UID %lu\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
@@ -932,17 +880,14 @@ msgid "%s: Unknown user or range: %s\n"
|
||||
msgstr "མ་ཤེས་པའི་ལག་ལེན་པ་:%s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot get the size of %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Failed to write %s: %s\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [option] GROUP\n"
|
||||
"\n"
|
||||
@@ -974,12 +919,10 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "The password for %s cannot be changed.\n"
|
||||
msgid "Except for the -A and -M options, the options cannot be combined.\n"
|
||||
msgstr "%sགི་དོན་ལུ་ ཆོག་ཡིག་སོར་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "The password for %s cannot be changed.\n"
|
||||
msgid "The options cannot be combined.\n"
|
||||
msgstr "%sགི་དོན་ལུ་ ཆོག་ཡིག་སོར་མི་ཚུགས།\n"
|
||||
|
||||
@@ -988,7 +931,6 @@ msgid "%s: shadow group passwords required for -A\n"
|
||||
msgstr "%s: -Aགི་དོན་ལུ་ གྱིབ་མའི་སྡེ་ཚན་ཆོག་ཡིག་ཚུ་དགོ\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s does not exist\n"
|
||||
msgid "%s: group '%s' does not exist in %s\n"
|
||||
msgstr "%s: སྡེ་ཚན་ %sམེད།\n"
|
||||
|
||||
@@ -1030,7 +972,6 @@ msgid "%s: Not a tty\n"
|
||||
msgstr "%s: ཊི་ཊི་ཝའི་མེན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] GROUP\n"
|
||||
"\n"
|
||||
@@ -1063,7 +1004,6 @@ msgid " -r, --system create a system account\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s is not a valid group name\n"
|
||||
msgid "%s: '%s' is not a valid group name\n"
|
||||
msgstr "%s: %s འདི་ ནུས་ཅན་གྱི་སྡེ་ཚན་མིང་མེན་པས།\n"
|
||||
|
||||
@@ -1076,7 +1016,6 @@ msgid "%s: -K requires KEY=VALUE\n"
|
||||
msgstr "%s: -K གིས་ ལྡེ་མིག་=བེ་ལུ་ དགོཔ་ཨིན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s exists\n"
|
||||
msgid "%s: group '%s' already exists\n"
|
||||
msgstr "%s: སྡེ་ཚན་ %sཡོདཔ་ཨིན།\n"
|
||||
|
||||
@@ -1085,7 +1024,6 @@ msgid "%s: GID '%lu' already exists\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: ཁྱོད་ཀྱི་ལག་ལེན་པའི་མིང་ གཏན་འབེབས་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1095,7 +1033,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1104,12 +1041,10 @@ msgid "%s: cannot remove the primary group of user '%s'\n"
|
||||
msgstr "%s: ཨེན་ཨའི་ཨེསི་ ཞབས་ཏོག་སྤྱོད་མི་གུ་ ལག་ལེན་པ་ '%s' བསྒྱུར་བཅོས་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s does not exist\n"
|
||||
msgid "%s: group '%s' does not exist\n"
|
||||
msgstr "%s: སྡེ་ཚན་ %sམེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group '%s' is a NIS group.\n"
|
||||
msgid "%s: group '%s' is a NIS group\n"
|
||||
msgstr "%s: སྡེ་ཚན་ '%s' འདི་ ཨེན་ཨའི་ཨེསི་སྡེ་ཚན་ཨིན།\n"
|
||||
|
||||
@@ -1118,7 +1053,6 @@ msgid "%s: %s is the NIS master\n"
|
||||
msgstr "%s: %sའདི་ ཨེན་ཇི་ཨེསི་ ཨམ་ཨིན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s is a NIS user\n"
|
||||
msgid "%s: user '%s' is already a member of '%s'\n"
|
||||
msgstr "%s: ལག་ལེན་པ་ %sའདི་ ཨེན་ཨའི་ཨེསི་ ལག་ལེན་པ་ཅིག་ཨིན།\n"
|
||||
|
||||
@@ -1127,7 +1061,6 @@ msgid "%s: Out of memory. Cannot update %s.\n"
|
||||
msgstr "%s: དུས་མཐུན་སྡེ་ཚན་ནང་ལུ་ དྲན་ཚད་ལས་བརྒལ་བ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [action]\n"
|
||||
"\n"
|
||||
@@ -1197,7 +1130,6 @@ msgid "%s: unknown user %s\n"
|
||||
msgstr "%s: མ་ཤེས་པའི་ལག་ལེན་པ་%s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [group [gshadow]]\n"
|
||||
"\n"
|
||||
@@ -1205,7 +1137,6 @@ msgid ""
|
||||
msgstr "ལག་ལེན་: %s [ཨིན་པུཊི་]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [group]\n"
|
||||
"\n"
|
||||
@@ -1221,7 +1152,6 @@ msgid " -s, --sort sort entries by UID\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: -s and -r are incompatibile\n"
|
||||
msgid "%s: -s and -r are incompatible\n"
|
||||
msgstr "%s: -s དང་ -r གཉིས་མཐུན་འགྱུར་ཅན་མེན།\n"
|
||||
|
||||
@@ -1240,7 +1170,6 @@ msgid "invalid group name '%s'\n"
|
||||
msgstr "ནུས་མེད་སྡེཚན་གྱི་མིང་ '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "invalid group name '%s'\n"
|
||||
msgid "invalid group ID '%lu'\n"
|
||||
msgstr "ནུས་མེད་སྡེཚན་གྱི་མིང་ '%s'\n"
|
||||
|
||||
@@ -1257,7 +1186,6 @@ msgid "no matching group file entry in %s\n"
|
||||
msgstr "%sནང་ མཐུན་སྒྲིག་སྡེ་ཚན་གྱི་ཡིག་སྣོད་ཐོ་བཀོད་མེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "add group '%s' in %s ?"
|
||||
msgid "add group '%s' in %s? "
|
||||
msgstr "%sནང་ སྡེ་ཚན་ '%s' ཁ་སྐོང་འབད་ནི་ཨིན་ན?"
|
||||
|
||||
@@ -1293,7 +1221,6 @@ msgid "%s: no changes\n"
|
||||
msgstr "%s: སོར་ནི་མེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot update file %s\n"
|
||||
msgid "%s: cannot delete %s\n"
|
||||
msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1339,12 +1266,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**ནམ་ཡང་ནང་བསྐྱོད་མ་འབད་**"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to update the entry for UID %lu\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update password file\n"
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: ཆོག་ཡིག་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མ་ཚུགས།\n"
|
||||
|
||||
@@ -1398,9 +1323,6 @@ msgstr ""
|
||||
"utmpཐོ་བཀོད་མིན་འདུག ཁྱོད་ཀྱིས་ གནས་རིམ་དམའ་ཤོས་\"sh\"གི་ནང་ལས་ \"login\"ལག་ལེན་འཐབ་དགོ"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "\n"
|
||||
#| "Login timed out after %d seconds.\n"
|
||||
msgid ""
|
||||
"\n"
|
||||
"Login timed out after %u seconds.\n"
|
||||
@@ -1420,7 +1342,6 @@ msgid "login: "
|
||||
msgstr "ནང་བསྐྱོད་: "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Maximum number of tries exceeded (%d)\n"
|
||||
msgid "Maximum number of tries exceeded (%u)\n"
|
||||
msgstr "འབད་རྩོལ་གྱི་ཨང་གྲངས་མང་མཐའ་ལྷག་ཡོདཔ་(%d)\n"
|
||||
|
||||
@@ -1431,7 +1352,6 @@ msgid "Login incorrect"
|
||||
msgstr "ནང་བསྐྱོད་བདེན་མེད།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: cannot find user %s\n"
|
||||
msgid "Cannot find user (%s)\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d:ལག་ལེན་པ་ %sའཚོལ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1474,7 +1394,6 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Usage: id\n"
|
||||
msgid "Usage: logoutd\n"
|
||||
msgstr "ལག་ལེན་པ་: id\n"
|
||||
|
||||
@@ -1485,7 +1404,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "ལག་ལེན་: sg group [[-c]བརྡ་བཀོད་ ]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -1512,7 +1430,6 @@ msgid "%s: group '%s' is a shadow group, but does not exist in /etc/group\n"
|
||||
msgstr "%s: སྡེ་ཚན་ %sམེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid user name '%s'\n"
|
||||
msgid "%s: invalid user ID '%s'\n"
|
||||
msgstr "%s: ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'།\n"
|
||||
|
||||
@@ -1545,12 +1462,10 @@ msgid "%s: line %d: can't update password\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: ཆོག་ཡིག་དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: mkdir failed\n"
|
||||
msgid "%s: line %d: mkdir %s failed: %s\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: mkdir འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: chown failed\n"
|
||||
msgid "%s: line %d: chown %s failed: %s\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -1559,7 +1474,6 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: ཐོ་བཀོད་དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -1568,7 +1482,6 @@ msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: %sགསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update group file\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: སྡེ་ཚན་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1694,17 +1607,14 @@ msgid "The password for %s is unchanged.\n"
|
||||
msgstr " %sགི་དོན་ལུ་ ཆོག་ཡིག་འདི་མ་སོར་བས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Password changed."
|
||||
msgid "%s: password changed.\n"
|
||||
msgstr "ཆོག་ཡིག་སོར་ཡོདཔ།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Password Expiration Warning"
|
||||
msgid "%s: password expiry information changed.\n"
|
||||
msgstr "ཆོག་ཡིག་དུས་ཡོལ་ཉེན་བརྡ།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [passwd]\n"
|
||||
"\n"
|
||||
@@ -1712,7 +1622,6 @@ msgid ""
|
||||
msgstr "ལག་ལེན་: %s [ཨིན་པུཊི་]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [passwd [shadow]]\n"
|
||||
"\n"
|
||||
@@ -1737,42 +1646,34 @@ msgid "invalid user name '%s'\n"
|
||||
msgstr "ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "invalid user name '%s'\n"
|
||||
msgid "invalid user ID '%lu'\n"
|
||||
msgstr "ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "user %s: no group %u\n"
|
||||
msgid "user '%s': no group %lu\n"
|
||||
msgstr "ལག་ལེན་པ་ %s: སྡེ་ཚན་ %uམེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "user %s: directory %s does not exist\n"
|
||||
msgid "user '%s': directory '%s' does not exist\n"
|
||||
msgstr "ལག་ལེན་པ་ %s: སྣོད་ཐོ་ %s མེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "user %s: program %s does not exist\n"
|
||||
msgid "user '%s': program '%s' does not exist\n"
|
||||
msgstr "ལག་ལེན་པ་ %s: ལས་རིམ་%s མེད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "no tcb directory for %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "create tcb directory for %s?"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "failed to create tcb directory for %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot lock file %s\n"
|
||||
msgid "%s: cannot lock %s.\n"
|
||||
msgstr "%s: ཡིག་སྣོད་ %sའདི་ ལྡེ་མིག་བརྐྱབ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1800,12 +1701,10 @@ msgid "user %s: last password change in the future\n"
|
||||
msgstr "ལག་ལེན་པ་ %s: མ་འོངས་པ་ནང་ མཇུག་གི་ཆོག་ཡིག་སོར་ནི།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: cannot sort entries in %s\n"
|
||||
msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't re-write file\n"
|
||||
msgid "%s: can't work with tcb enabled\n"
|
||||
msgstr "%s: ཡིག་སྣོད་ལོག་འབྲི་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1823,7 +1722,6 @@ msgid "Please enter your OWN password as authentication.\n"
|
||||
msgstr "ཁྱོད་རའི་ཆོག་ཡིག་འདི་ བདེན་བཤད་སྦེ་བཙུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot lock file %s\n"
|
||||
msgid "%s: Cannot fork user shell\n"
|
||||
msgstr "%s: ཡིག་སྣོད་ %sའདི་ ལྡེ་མིག་བརྐྱབ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -1893,17 +1791,14 @@ msgid "(Enter your own password)"
|
||||
msgstr "(ཁྱོད་རའི་ཆོག་ཡིག་རྐྱངམ་ཅིག་བཙུགས་)"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM authentication failed\n"
|
||||
msgid "%s: Authentication failure\n"
|
||||
msgstr "%s: པི་ཨེ་ཨེམ་ བདེན་བཤད་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "You are not authorized to su %s\n"
|
||||
msgid "%s: You are not authorized to su at that time\n"
|
||||
msgstr "ཁྱོད་ ཟླ་%sལུ་ དབང་སྤྲོད་མ་འབད།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "No password entry for 'root'"
|
||||
msgid "No passwd entry for user '%s'\n"
|
||||
msgstr "'རྩ་བ་'གི་དོན་ལུ་ ཆོག་ཡིག་ཐོ་བཀོད་མེད།"
|
||||
|
||||
@@ -1916,12 +1811,10 @@ msgid "%s: pam_start: error %d\n"
|
||||
msgstr "%s: pam_start:འཛོལ་བ་%d(_s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot drop the controlling terminal\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Cannot execute %s"
|
||||
msgid "Cannot execute %s\n"
|
||||
msgstr "%sལག་ལེན་འཐབ་མི་ཚུགས།"
|
||||
|
||||
@@ -1963,17 +1856,14 @@ msgid "%s: cannot open new defaults file\n"
|
||||
msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ ཁ་ཕྱེ་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: chown failed\n"
|
||||
msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s"
|
||||
msgid "%s: rename: %s: %s\n"
|
||||
msgstr "%s: བསྐྱར་མིང་བཏགས་:%s"
|
||||
|
||||
@@ -1986,7 +1876,6 @@ msgid "%s: too many groups specified (max %d).\n"
|
||||
msgstr "%s: སྡེ་ཚན་མང་རབས་ཅིག་གསལ་བཀོད་འབད་ཡོདཔ་(མང་མཐའ་ %d)།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] LOGIN\n"
|
||||
" %s -D\n"
|
||||
@@ -2116,7 +2005,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to prepare the new %s entry\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -2136,7 +2024,6 @@ msgid "Setting mailbox file permissions"
|
||||
msgstr "ཡིག་སྒྲོམ་ཡིག་སྣོད་གྱི་གནང་བ་ གཞི་སྒྲིག་འབད་དོ།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s exists\n"
|
||||
msgid "%s: user '%s' already exists\n"
|
||||
msgstr "%s: ལག་ལེན་པ་ %sཡོདཔ་ཨིན།\n"
|
||||
|
||||
@@ -2152,12 +2039,10 @@ msgid "%s: can't create user\n"
|
||||
msgstr "%s: %sགསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: UID %u is not unique\n"
|
||||
msgid "%s: UID %lu is not unique\n"
|
||||
msgstr "%s: ཡུ་ཨའི་ཌི་ %uའདི་ ཐུན་མོང་མེན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to create tcb directory for %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
@@ -2208,24 +2093,19 @@ msgid "%s: group %s not removed because it has other members.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%s: Cannot remove group %s which is a primary group for another user.\n"
|
||||
msgid "%s: group %s is the primary group of another user and is not removed.\n"
|
||||
msgstr ""
|
||||
"%s: ལག་ལེན་པ་གཞན་གྱི་དོན་ལུ་ གཞི་རིམ་སྡེ་ཚན་ཅིག་ཨིན་མི་སྡེ་ཚན་ %sའདི་ རྩ་བསྐྲད་གཏང་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home directory '%s'\n"
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
msgstr "%s: ནུས་མེད་ཁྱིམ་གྱི་སྣོད་ཐོ་ '%s'།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: warning: can't remove %s: %s\n"
|
||||
msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།"
|
||||
|
||||
@@ -2238,17 +2118,14 @@ msgid "%s: Can't allocate memory, tcb entry for %s not removed.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Cannot drop privileges: %s\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove the content of %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove tcb files for %s: %s\n"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n"
|
||||
|
||||
@@ -2257,7 +2134,6 @@ msgid "%s: user %s is a NIS user\n"
|
||||
msgstr "%s: ལག་ལེན་པ་ %sའདི་ ཨེན་ཨའི་ཨེསི་ ལག་ལེན་པ་ཅིག་ཨིན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home directory '%s'\n"
|
||||
msgid "%s: %s home directory (%s) not found\n"
|
||||
msgstr "%s: ནུས་མེད་ཁྱིམ་གྱི་སྣོད་ཐོ་ '%s'།\n"
|
||||
|
||||
@@ -2298,7 +2174,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"
|
||||
@@ -2350,22 +2226,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s exists\n"
|
||||
msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: ལག་ལེན་པ་ %sཡོདཔ་ཨིན།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: ནུས་མེད་ཚེས་གྲངས་ '%s'།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: ནུས་མེད་ཚེས་གྲངས་ '%s'།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n"
|
||||
|
||||
@@ -2396,7 +2268,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to change ownership of the home directory"
|
||||
msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n"
|
||||
|
||||
@@ -2428,22 +2299,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "ཡིག་སྒྲོམ་གྱི་བསྐྱར་མིང་བཏགས་ནི་ལུ་ འཛོལ་བ།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to remove uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to add uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to remove gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to add gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -2467,31 +2334,24 @@ msgid " -u, --user which user's tcb shadow file to edit\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to remove %s\n"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "\n"
|
||||
#| "%s: %s is unchanged\n"
|
||||
msgid "%s: %s is unchanged\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"%s: %sའདི་ བསྒྱུར་བཅོས་མ་འབད་བས།\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to create scratch directory"
|
||||
msgstr "ཡིག་སྒྲོམ་གྱི་བསྐྱར་མིང་བཏགས་ནི་ལུ་ འཛོལ་བ།"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "failed to drop privileges"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Couldn't lock file"
|
||||
msgid "Couldn't get file context"
|
||||
msgstr "ཡིག་སྣོད་ལྡེ་མིག་བརྐྱབས་མ་ཚུགས།"
|
||||
|
||||
@@ -2499,7 +2359,6 @@ msgid "setfscreatecon () failed"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "failed to gain privileges"
|
||||
msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n"
|
||||
|
||||
@@ -2510,12 +2369,10 @@ msgid "Couldn't make backup"
|
||||
msgstr "རྒྱབ་ཐག་བཟོ་མ་ཚུགས།"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s not found in /etc/passwd\n"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: /etc/passwd ནང་ལུ་ %s མ་ཐོབ།\n"
|
||||
|
||||
@@ -2528,22 +2385,18 @@ msgid "failed to open scratch file"
|
||||
msgstr "%s: སྡེ་ཚན་ཡིག་སྣོད་ ཁ་ཕྱེ་མ་ཚུགས།\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: fields too long\n"
|
||||
msgid "failed to unlink scratch file"
|
||||
msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to stat edited file"
|
||||
msgstr "ཡིག་སྒྲོམ་གྱི་བསྐྱར་མིང་བཏགས་ནི་ལུ་ འཛོལ་བ།"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to change mailbox owner"
|
||||
msgid "failed to allocate memory"
|
||||
msgstr "ཡིག་སྒྲོམ་བདག་པོ་སོར་ནི་ལུ་ འཐུས་ཤོར་བྱུང་ཡོདཔ།"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to create backup file"
|
||||
msgstr "ཡིག་སྒྲོམ་གྱི་བསྐྱར་མིང་བཏགས་ནི་ལུ་ འཛོལ་བ།"
|
||||
|
||||
@@ -2552,7 +2405,6 @@ msgid "%s: can't restore %s: %s (your changes are in %s)\n"
|
||||
msgstr "%s: %sསོར་ཆུད་འབད་མ་ཚུགས་: %s (ཁྱོད་ཀྱི་བསྒྱུར་བཅོས་ཚུ་ %sནང་ཨིན་)།\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid base directory '%s'\n"
|
||||
msgid "%s: failed to find tcb directory for %s\n"
|
||||
msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ཐོ་'%s'།\n"
|
||||
|
||||
@@ -2831,7 +2683,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"
|
||||
|
||||
38
po/el.po
38
po/el.po
@@ -47,7 +47,6 @@ 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"
|
||||
msgid "%s: nscd exited with status %d\n"
|
||||
msgstr "%s: το ncsd τερμάτισε με κατάσταση εξόδου %d"
|
||||
|
||||
@@ -433,7 +432,6 @@ msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: αδυναμία προσπέλαση του καταλόγου chroot %s: %s\n"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
@@ -522,8 +520,9 @@ msgstr ""
|
||||
"συνθηματικό\n"
|
||||
" αλλάξει σε ΕΛΑΧ_ΗΜΕΡΕΣ\n"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
" -M, --maxdays ΜΕΓ_ΗΜΕΡΕΣ καθορίζει μέγιστο αριθμό ημερών πριν το "
|
||||
@@ -812,7 +811,6 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: γραμμή %d: έλλειψη νέου συνθηματικού\n"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
@@ -1130,8 +1128,6 @@ 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"
|
||||
@@ -1369,8 +1365,6 @@ msgstr ""
|
||||
"παλαιότερες από ΗΜΕΡΕΣ\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"
|
||||
@@ -1379,8 +1373,6 @@ msgstr ""
|
||||
"τους χρήστες\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"
|
||||
@@ -1411,12 +1403,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**Καμιά είσοδος στο σύστημα**"
|
||||
|
||||
#, fuzzy, 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: Aδυναμία ανάκτησης της εγγραφής UID %lu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update password file\n"
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: αδυναμία ανανέωσης αρχείου συνθηματικών\n"
|
||||
|
||||
@@ -1552,7 +1542,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Χρήση: sg ομάδα [[-c] εντολή]\n"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
@@ -1625,17 +1614,14 @@ 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"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: αποτυχία προετοιμασίας της νέας εγγραφής %s '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: αδυναμία δημιουργίας του χρήστη\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update group file\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: αδυναμία ανανέωσης για το αρχείο ομάδων\n"
|
||||
|
||||
@@ -1659,7 +1645,6 @@ msgstr ""
|
||||
"ονομαζόμενου λογαριασμού\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid " -e, --encrypted supplied passwords are encrypted\n"
|
||||
msgid " -k, --keep-tokens change password only if expired\n"
|
||||
msgstr ""
|
||||
" -e, --encrypted τα παρεχόμενα συνθηματικά είναι "
|
||||
@@ -1828,7 +1813,6 @@ msgstr ""
|
||||
"Επιλογές:\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid " -q, --quiet quiet mode\n"
|
||||
msgid " -q, --quiet report errors only\n"
|
||||
msgstr " -q, --quiet σιωπηλή λειτουργία\n"
|
||||
|
||||
@@ -2067,7 +2051,6 @@ msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: πολύ μακριά γραμμή στο %s: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: Αδυναμία δημιουργίας συμβολικού συνδέσμου %s: %s\n"
|
||||
|
||||
@@ -2245,7 +2228,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο lastlog του UID %lu: %s\n"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
@@ -2292,12 +2274,10 @@ msgid "%s: can't create group\n"
|
||||
msgstr "%s: αδυναμία δημιουργίας ομάδας\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: αδυναμία δημιουργίας του χρήστη\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: αδυναμία δημιουργίας ομάδας\n"
|
||||
|
||||
@@ -2352,7 +2332,6 @@ msgstr ""
|
||||
"%s: η ομάδα %s είναι πρωταρχική ομάδα για άλλο χρήστη και δεν διαγράφηκε.\n"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
@@ -2444,7 +2423,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"
|
||||
@@ -2517,12 +2496,10 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: Ο χρήστης %s υπάρχει ήδη στο %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: Μη έγκυρη ημερομηνία '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: Μη έγκυρη ημερομηνία '%s'\n"
|
||||
|
||||
@@ -2543,7 +2520,6 @@ msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: το UID '%lu' υπάρχει ήδη\n"
|
||||
|
||||
#, fuzzy, 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 δεν είναι εξουσιοδοτημένος να αλλάξει το συνθηματικό του "
|
||||
@@ -2598,22 +2574,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "αποτυχία μετονομασίας γραμματοκιβωτίου"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
#, fuzzy, 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"
|
||||
|
||||
@@ -2673,12 +2645,10 @@ msgid "Couldn't make backup"
|
||||
msgstr "Αδυναμία δημιουργίας αντιγράφου ασφαλείας "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: nscd exited with status %d"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: το ncsd τερμάτισε με κατάσταση εξόδου %d"
|
||||
|
||||
@@ -2981,7 +2951,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"
|
||||
|
||||
64
po/es.po
64
po/es.po
@@ -114,7 +114,6 @@ msgid "Could not set serange for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Could not allocate space for config info.\n"
|
||||
msgid "Could not set sename for %s\n"
|
||||
msgstr "No se pudo reservar espacio para la información de configuración.\n"
|
||||
|
||||
@@ -123,7 +122,6 @@ msgid "Could not modify login mapping for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Changing the aging information for %s\n"
|
||||
msgid "Cannot create SELinux login mapping for %s\n"
|
||||
msgstr "Cambiando la información de la edad para %s\n"
|
||||
|
||||
@@ -144,12 +142,10 @@ msgid "Cannot init SELinux management\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "Cannot create SELinux user key\n"
|
||||
msgstr "%s: no se pudo determinar su nombre de usuario.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: cannot find user %s\n"
|
||||
msgid "Cannot verify the SELinux user\n"
|
||||
msgstr "%s: línea %d: no se puede encontrar el usuario %s\n"
|
||||
|
||||
@@ -449,22 +445,18 @@ msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgstr "%s: se produjo un fallo al desprenderse de los privilegios (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home phone: '%s'\n"
|
||||
msgid "%s: invalid chroot path '%s'\n"
|
||||
msgstr "%s: teléfono de casa incorrecto: «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create directory %s: %s\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: no se pudo crear el directorio %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create directory %s: %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: no se pudo crear el directorio %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Failed to create tcb directory for %s\n"
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
msgstr "%s: se produjo un fallo al crear el directorio tcb para %s\n"
|
||||
|
||||
@@ -546,8 +538,9 @@ msgstr ""
|
||||
" -m, --mindays DÍAS_MIN establece el número mínimo de días antes de\n"
|
||||
" cambiar la contraseña a DÍAS_MIN\n"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
" -M, --maxdays DÍAS_MAX establece el número máximo de días antes de\n"
|
||||
@@ -635,7 +628,6 @@ msgid "%s: Cannot determine your user name.\n"
|
||||
msgstr "%s: no se pudo determinar su nombre de usuario.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: PAM: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
@@ -786,7 +778,6 @@ msgstr ""
|
||||
"Opciones:\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " -c, --crypt-method <METHOD> the crypt method (one of %s)\n"
|
||||
msgid " -c, --crypt-method METHOD the crypt method (one of %s)\n"
|
||||
msgstr " -c, --crypt-method <MÉTODO> el método de cifrado (uno de %s)\n"
|
||||
|
||||
@@ -829,7 +820,6 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: línea %d: falta la nueva contraseña\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to remove %s\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: se produjo un fallo al eliminar %s\n"
|
||||
|
||||
@@ -983,7 +973,6 @@ msgid "%s: Cannot get the size of %s: %s\n"
|
||||
msgstr "%s: no se pudo conseguir el tamaño de %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to remove %s\n"
|
||||
msgid "%s: Failed to write %s: %s\n"
|
||||
msgstr "%s: se produjo un fallo al eliminar %s\n"
|
||||
|
||||
@@ -1142,13 +1131,10 @@ msgid "%s: GID '%lu' already exists\n"
|
||||
msgstr "%s: el GID «%lu» ya existe\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: no se pudo determinar su nombre de usuario.\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"
|
||||
@@ -1386,8 +1372,6 @@ msgstr ""
|
||||
" a DÍAS\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"
|
||||
@@ -1396,8 +1380,6 @@ msgstr ""
|
||||
" todos los usuarios\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"
|
||||
@@ -1428,12 +1410,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**Nunca ha accedido**"
|
||||
|
||||
#, fuzzy, 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: Se produjo un fallo al conseguir la entrada para el UID %lu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update password file\n"
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: no puedo actualizar el fichero de contraseñas\n"
|
||||
|
||||
@@ -1515,7 +1495,6 @@ msgid "Login incorrect"
|
||||
msgstr "Identificación incorrecta"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: cannot find user %s\n"
|
||||
msgid "Cannot find user (%s)\n"
|
||||
msgstr "%s: línea %d: no se puede encontrar el usuario %s\n"
|
||||
|
||||
@@ -1567,7 +1546,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Modo de uso: sg grupo [[-c] orden]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to remove %s\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: se produjo un fallo al eliminar %s\n"
|
||||
|
||||
@@ -1639,17 +1617,14 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: línea %d: no se puede actualizar la entrada\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: se produjo un fallo al preparar la nueva %s entrada «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: no se pudo crear el usuario\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update group file\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: no se puede actualizar el fichero de grupo\n"
|
||||
|
||||
@@ -1811,10 +1786,6 @@ msgid "%s: password expiry information changed.\n"
|
||||
msgstr "%s: información de caducidad de la contraseña cambiada.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "Usage: %s [options] [action]\n"
|
||||
#| "\n"
|
||||
#| "Options:\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [passwd]\n"
|
||||
"\n"
|
||||
@@ -1835,7 +1806,6 @@ msgstr ""
|
||||
"Opciones:\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid " -q, --quiet quiet mode\n"
|
||||
msgid " -q, --quiet report errors only\n"
|
||||
msgstr " -q, --quiet modo silencioso\n"
|
||||
|
||||
@@ -2013,7 +1983,6 @@ msgid "%s: You are not authorized to su at that time\n"
|
||||
msgstr "%s: no está autorizado a usar su en este momento\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "No password entry for 'root'"
|
||||
msgid "No passwd entry for user '%s'\n"
|
||||
msgstr "Sin entrada de contraseña para el administrador («root»)"
|
||||
|
||||
@@ -2026,7 +1995,6 @@ msgid "%s: pam_start: error %d\n"
|
||||
msgstr "%s: pam_start: error %d\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot remove the content of %s: %s\n"
|
||||
msgid "%s: Cannot drop the controlling terminal\n"
|
||||
msgstr "%s: no se pudo eliminar el contenido de %s: %s\n"
|
||||
|
||||
@@ -2079,7 +2047,6 @@ msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: línea demasiado larga en %s: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s no se pudo crear el enlace simbólico %s: %s\n"
|
||||
|
||||
@@ -2263,7 +2230,6 @@ msgstr ""
|
||||
"%s: se produjo un fallo al reiniciar la entrada de lastlog del UID %lu: %s\n"
|
||||
|
||||
#, fuzzy, 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: se produjo un fallo al preparar la nueva %s entrada «%s»\n"
|
||||
|
||||
@@ -2310,12 +2276,10 @@ msgid "%s: can't create group\n"
|
||||
msgstr "%s: no se puede crear el grupo\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: no se pudo crear el usuario\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: no se puede crear el grupo\n"
|
||||
|
||||
@@ -2347,9 +2311,6 @@ msgstr ""
|
||||
" correo\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -Z, --selinux-user new SELinux user mapping for the user "
|
||||
#| "account\n"
|
||||
msgid ""
|
||||
" -Z, --selinux-user remove any SELinux user mapping for the "
|
||||
"user\n"
|
||||
@@ -2358,7 +2319,6 @@ msgstr ""
|
||||
" usuario\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove the primary group of user '%s'\n"
|
||||
msgid ""
|
||||
"%s: group %s not removed because it is not the primary group of user %s.\n"
|
||||
msgstr "%s: no se pudo eliminar el grupo primario del usuario «%s»\n"
|
||||
@@ -2372,12 +2332,10 @@ msgid "%s: group %s is the primary group of another user and is not removed.\n"
|
||||
msgstr "%s: grupo %s es el grupo primario de otro usuario y no se eliminará.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: no se pudo eliminar la entrada «%s» de %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s home directory (%s) not found\n"
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
msgstr "%s: %s directorio personal (%s) no encontrado\n"
|
||||
|
||||
@@ -2424,7 +2382,6 @@ msgid "%s: error removing directory %s\n"
|
||||
msgstr "%s: error eliminando el directorio %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n"
|
||||
msgid "%s: warning: the user name %s to SELinux user mapping removal failed.\n"
|
||||
msgstr ""
|
||||
"%s: aviso: no se pudo relacionar el nombre del usuario %s con el usuario %s "
|
||||
@@ -2462,7 +2419,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"
|
||||
@@ -2511,9 +2468,6 @@ msgid " -W, --del-subgids FIRST-LAST remove range of subordinate gids\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -Z, --selinux-user new SELinux user mapping for the user "
|
||||
#| "account\n"
|
||||
msgid ""
|
||||
" -Z, --selinux-user SEUSER new SELinux user mapping for the user "
|
||||
"account\n"
|
||||
@@ -2535,17 +2489,14 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: el usuario «%s» ya existe en %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: fecha «%s» incorrecta\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: fecha «%s» incorrecta\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open %s\n"
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: no se pudo abrir %s\n"
|
||||
|
||||
@@ -2562,7 +2513,6 @@ msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: el UID «%lu» ya existe\n"
|
||||
|
||||
#, fuzzy, 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 no está autorizado a cambiar la contraseña de %s\n"
|
||||
|
||||
@@ -2614,22 +2564,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "se produjo un fallo al cambiar el nombre del buzón de correo"
|
||||
|
||||
#, fuzzy, 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: se produjo un fallo al preparar la nueva %s entrada «%s»\n"
|
||||
|
||||
#, fuzzy, 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: se produjo un fallo al preparar la nueva %s entrada «%s»\n"
|
||||
|
||||
#, fuzzy, 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: se produjo un fallo al preparar la nueva %s entrada «%s»\n"
|
||||
|
||||
#, fuzzy, 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: se produjo un fallo al preparar la nueva %s entrada «%s»\n"
|
||||
|
||||
@@ -2689,12 +2635,10 @@ msgid "Couldn't make backup"
|
||||
msgstr "No se puede realizar una copia de seguridad"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s not found in /etc/passwd\n"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: no se encontró %s en /etc/passwd\n"
|
||||
|
||||
@@ -3019,7 +2963,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"
|
||||
|
||||
108
po/eu.po
108
po/eu.po
@@ -90,7 +90,6 @@ msgid "Could not set serange for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Could not allocate space for config info.\n"
|
||||
msgid "Could not set sename for %s\n"
|
||||
msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n"
|
||||
|
||||
@@ -99,7 +98,6 @@ msgid "Could not modify login mapping for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Changing the aging information for %s\n"
|
||||
msgid "Cannot create SELinux login mapping for %s\n"
|
||||
msgstr "%s(r)en data informazioa aldatzen\n"
|
||||
|
||||
@@ -120,12 +118,10 @@ msgid "Cannot init SELinux management\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "Cannot create SELinux user key\n"
|
||||
msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "Cannot verify the SELinux user\n"
|
||||
msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n"
|
||||
|
||||
@@ -158,17 +154,14 @@ msgid "%s: out of memory\n"
|
||||
msgstr "%s: memoriarik ez\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot delete %s\n"
|
||||
msgid "%s: Cannot stat %s: %s\n"
|
||||
msgstr "%s: ezin da %s ezabatu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s home directory (%s) not found\n"
|
||||
msgid "%s: %s is neither a directory, nor a symlink.\n"
|
||||
msgstr "%s: %s etxe-direktorioa (%s) ez dago\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: Cannot read symbolic link %s: %s\n"
|
||||
msgstr "%s: ezin da '%s' sarrera %s-tik kendu\n"
|
||||
|
||||
@@ -177,57 +170,46 @@ msgid "%s: Suspiciously long symlink: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create directory %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "lastlog: Cannot get the size of %s: %s\n"
|
||||
msgid "%s: Cannot change owner of %s: %s\n"
|
||||
msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove %s: %s\n"
|
||||
msgid "%s: Cannot change mode of %s: %s\n"
|
||||
msgstr "%s: abisua: ezin da %s ezabatu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s: %s"
|
||||
msgid "%s: unlink: %s: %s\n"
|
||||
msgstr "%s: berrizendatu: %s: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove directory %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa %s gisa izenez aldatu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot rename %s to %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa %s gisa izenez aldatu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove %s: %s\n"
|
||||
msgid "%s: Cannot remove %s: %s\n"
|
||||
msgstr "%s: abisua: ezin da %s ezabatu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "lastlog: Cannot get the size of %s: %s\n"
|
||||
msgid "%s: Cannot change owners of %s: %s\n"
|
||||
msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot delete %s\n"
|
||||
msgid "%s: Cannot lstat %s: %s\n"
|
||||
msgstr "%s: ezin da %s ezabatu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: (line %d, user %s) password not changed\n"
|
||||
msgid "%s: Warning, user %s has no tcb shadow file.\n"
|
||||
msgstr "%s: `(%d lerroa, %s erabiltzailea) pasahitza ez da aldatu\n"
|
||||
|
||||
@@ -238,12 +220,10 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s: %s"
|
||||
msgid "%s: mkdir: %s: %s\n"
|
||||
msgstr "%s: berrizendatu: %s: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open %s\n"
|
||||
msgid "%s: Cannot open %s: %s\n"
|
||||
msgstr "%s: ezin da %s ireki\n"
|
||||
|
||||
@@ -332,12 +312,10 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "failed to change mailbox owner"
|
||||
msgid "%s: failed to allocate memory: %s\n"
|
||||
msgstr "huts egin du postontzia jabez aldatzean"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Can't get unique system UID (no more available UIDs)\n"
|
||||
msgid "%s: Can't get unique system GID (no more available GIDs)\n"
|
||||
msgstr ""
|
||||
"%s: Ezin da sistema UID bakarra lortu (ez dago UID erabilgarri gehiago)\n"
|
||||
@@ -433,22 +411,18 @@ msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgstr "%s: huts baimenak kentzerakoan (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home phone: '%s'\n"
|
||||
msgid "%s: invalid chroot path '%s'\n"
|
||||
msgstr "%s: etxeko tlf baliogabea: '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
@@ -528,8 +502,9 @@ msgstr ""
|
||||
" -m, --mindays GUTXI_EGUN pasahitz aldaketa gutxieneko data\n"
|
||||
" GUTXI_EGUN-era aldatu\n"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
" -M, --maxdays GEHI_EGUN pasashitz aldaketa gehienezko data\n"
|
||||
@@ -764,7 +739,6 @@ msgstr ""
|
||||
"Aukerak:\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " -c, --crypt-method the crypt method (one of %s)\n"
|
||||
msgid " -c, --crypt-method METHOD the crypt method (one of %s)\n"
|
||||
msgstr " -c, --crypt-method zifratze metodoa (%s-etako bat)\n"
|
||||
|
||||
@@ -806,7 +780,6 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: %d. lerroa: pasahitz berria falta da\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to remove %s\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: huts %s kentzerakoan\n"
|
||||
|
||||
@@ -854,12 +827,10 @@ msgid "%s: %s is an invalid shell\n"
|
||||
msgstr "%s: %s shell baliogabea da\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user '%s' does not exist\n"
|
||||
msgid "%s: Warning: %s does not exist\n"
|
||||
msgstr "%s: '%s' erabiltzailea ez da existitzen\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: %s not owned by %s\n"
|
||||
msgid "%s: Warning: %s is not executable\n"
|
||||
msgstr "%s: abisua: %s ez dago %s(r)en jabegoan\n"
|
||||
|
||||
@@ -957,7 +928,6 @@ msgid "%s: Cannot get the size of %s: %s\n"
|
||||
msgstr "%s: Ezinda %s-ren tamaina eskuratu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to remove %s\n"
|
||||
msgid "%s: Failed to write %s: %s\n"
|
||||
msgstr "%s: huts %s kentzerakoan\n"
|
||||
|
||||
@@ -1050,10 +1020,6 @@ msgid "%s: Not a tty\n"
|
||||
msgstr "%s: ez da tty\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "Usage: %s [options]\n"
|
||||
#| "\n"
|
||||
#| "Options:\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] GROUP\n"
|
||||
"\n"
|
||||
@@ -1116,13 +1082,10 @@ msgid "%s: GID '%lu' already exists\n"
|
||||
msgstr "%s: '%lu' GIDa badago dagoeneko\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\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"
|
||||
@@ -1211,7 +1174,6 @@ msgid "%s: only root can use the -g/--group option\n"
|
||||
msgstr "%s: root-ek bakarrik erabili dezake -g/--group aukera\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid " -r, --system create system accounts\n"
|
||||
msgid " -g, --gid GID change the group ID to GID\n"
|
||||
msgstr " -r, --system sortu sistema kontuak\n"
|
||||
|
||||
@@ -1358,8 +1320,6 @@ msgstr ""
|
||||
" erregistroak\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"
|
||||
@@ -1368,8 +1328,6 @@ msgstr ""
|
||||
" erregistroak bistaratzen ditu\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"
|
||||
@@ -1400,12 +1358,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**Inoiz ez du saiorik hasi**"
|
||||
|
||||
#, fuzzy, 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: Huts %lu UIDaren sarrera eskuratzean\n"
|
||||
|
||||
#, fuzzy, 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: huts %lu UIDaren lastlog sarrera berrezartzean: %s\n"
|
||||
|
||||
@@ -1489,7 +1445,6 @@ msgid "Login incorrect"
|
||||
msgstr "Izen okerra"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "Cannot find user (%s)\n"
|
||||
msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n"
|
||||
|
||||
@@ -1542,7 +1497,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Erabilera: sg taldea [[-c] komandoa]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to remove %s\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: huts %s kentzerakoan\n"
|
||||
|
||||
@@ -1614,17 +1568,14 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: %d lerroa: ezin da sarrera eguneratu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: huts %s sarrera berria prestatzean '%s'\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: ezin da erabiltzailea sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: ezin da taldea sortu\n"
|
||||
|
||||
@@ -1781,10 +1732,6 @@ msgid "%s: password expiry information changed.\n"
|
||||
msgstr "%s: pasahitz iraungitzea informazioa aldatua.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "Usage: %s [options]\n"
|
||||
#| "\n"
|
||||
#| "Options:\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [passwd]\n"
|
||||
"\n"
|
||||
@@ -1805,7 +1752,6 @@ msgstr ""
|
||||
"Aukerak:\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid " -r, --system create system accounts\n"
|
||||
msgid " -q, --quiet report errors only\n"
|
||||
msgstr " -r, --system sortu sistema kontuak\n"
|
||||
|
||||
@@ -1840,22 +1786,18 @@ msgid "user '%s': program '%s' does not exist\n"
|
||||
msgstr "'%s' erabiltzailea: '%s' programa ez da existitzen\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "no tcb directory for %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "create tcb directory for %s?"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "failed to create tcb directory for %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open %s\n"
|
||||
msgid "%s: cannot lock %s.\n"
|
||||
msgstr "%s: ezin da %s ireki\n"
|
||||
|
||||
@@ -1906,7 +1848,6 @@ msgid "Please enter your OWN password as authentication.\n"
|
||||
msgstr "Sartu zure pasahitz PROPIOA autentifikazio gisa.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "%s: Cannot fork user shell\n"
|
||||
msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n"
|
||||
|
||||
@@ -1984,7 +1925,6 @@ msgid "%s: You are not authorized to su at that time\n"
|
||||
msgstr "%s: Ez duzu orain su erabiltzeko baimenik\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "No password entry for 'root'"
|
||||
msgid "No passwd entry for user '%s'\n"
|
||||
msgstr "Ez dago 'root'-en pasahitzik"
|
||||
|
||||
@@ -1997,7 +1937,6 @@ msgid "%s: pam_start: error %d\n"
|
||||
msgstr "%s: pam_start: %d errorea\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "lastlog: Cannot get the size of %s: %s\n"
|
||||
msgid "%s: Cannot drop the controlling terminal\n"
|
||||
msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n"
|
||||
|
||||
@@ -2047,7 +1986,6 @@ msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: lerro luzeegia %s-n: %s..."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
@@ -2078,9 +2016,6 @@ msgstr ""
|
||||
"Aukerak:\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -b, --base-dir BASE_DIR base directory for the new user account\n"
|
||||
#| " home directory\n"
|
||||
msgid ""
|
||||
" -b, --base-dir BASE_DIR base directory for the home directory of "
|
||||
"the\n"
|
||||
@@ -2206,7 +2141,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr "%s: huts %lu UIDaren lastlog sarrera berrezartzean: %s\n"
|
||||
|
||||
#, fuzzy, 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: huts %s sarrera berria prestatzean '%s'\n"
|
||||
|
||||
@@ -2245,7 +2179,6 @@ msgid "%s: UID %lu is not unique\n"
|
||||
msgstr "%s: %lu UIDa ez da bakarra\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to create tcb directory for %s\n"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
@@ -2254,12 +2187,10 @@ msgid "%s: can't create group\n"
|
||||
msgstr "%s: ezin da taldea sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create user\n"
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "%s: ezin da erabiltzailea sortu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't create group\n"
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "%s: ezin da taldea sortu\n"
|
||||
|
||||
@@ -2289,9 +2220,6 @@ msgstr ""
|
||||
" -r, --remove etxe direktorioa eta posta hilara ezabatu\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -Z, --selinux-user new SELinux user mapping for the user "
|
||||
#| "account\n"
|
||||
msgid ""
|
||||
" -Z, --selinux-user remove any SELinux user mapping for the "
|
||||
"user\n"
|
||||
@@ -2300,7 +2228,6 @@ msgstr ""
|
||||
"erabiltzailearen kontuarentzat\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove the primary group of user '%s'\n"
|
||||
msgid ""
|
||||
"%s: group %s not removed because it is not the primary group of user %s.\n"
|
||||
msgstr "%s: Ezin da '%s' erabiltzailearen talde nagusia kendu\n"
|
||||
@@ -2316,12 +2243,10 @@ msgstr ""
|
||||
"da.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: ezin da '%s' sarrera %s-tik kendu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s home directory (%s) not found\n"
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
msgstr "%s: %s etxe-direktorioa (%s) ez dago\n"
|
||||
|
||||
@@ -2338,17 +2263,14 @@ msgid "%s: Can't allocate memory, tcb entry for %s not removed.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Cannot drop privileges: %s\n"
|
||||
msgstr "%s: huts baimenak kentzerakoan (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "lastlog: Cannot get the size of %s: %s\n"
|
||||
msgid "%s: Cannot remove the content of %s: %s\n"
|
||||
msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgid "%s: Cannot remove tcb files for %s: %s\n"
|
||||
msgstr "%s: ezin da '%s' sarrera %s-tik kendu\n"
|
||||
|
||||
@@ -2369,7 +2291,6 @@ msgid "%s: error removing directory %s\n"
|
||||
msgstr "%s: errorea %s direktorioa ezabatzean\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n"
|
||||
msgid "%s: warning: the user name %s to SELinux user mapping removal failed.\n"
|
||||
msgstr ""
|
||||
"%s: abisua: %s erabiltzaile izena %s SELinux erabiltzailera mapatzean huts "
|
||||
@@ -2408,7 +2329,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"
|
||||
@@ -2458,9 +2379,6 @@ msgid " -W, --del-subgids FIRST-LAST remove range of subordinate gids\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| " -Z, --selinux-user new SELinux user mapping for the user "
|
||||
#| "account\n"
|
||||
msgid ""
|
||||
" -Z, --selinux-user SEUSER new SELinux user mapping for the user "
|
||||
"account\n"
|
||||
@@ -2483,17 +2401,14 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: '%s' erabiltzailea badago dagoeneko %s-n\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: '%s' data baliogabea\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: '%s' data baliogabea\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open %s\n"
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: ezin da %s ireki\n"
|
||||
|
||||
@@ -2510,7 +2425,6 @@ msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: '%lu' UIDa badago dagoeneko\n"
|
||||
|
||||
#, fuzzy, 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 ez dago %s-ren pasahitza aldatzeko baimendurik\n"
|
||||
|
||||
@@ -2525,7 +2439,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to change ownership of the home directory"
|
||||
msgstr "%s: ezin da %s direktorioa sortu\n"
|
||||
|
||||
@@ -2560,22 +2473,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "huts egin du postontzia izenez aldatzean"
|
||||
|
||||
#, fuzzy, 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: huts %s sarrera berria prestatzean '%s'\n"
|
||||
|
||||
#, fuzzy, 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: huts %s sarrera berria prestatzean '%s'\n"
|
||||
|
||||
#, fuzzy, 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: huts %s sarrera berria prestatzean '%s'\n"
|
||||
|
||||
#, fuzzy, 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: huts %s sarrera berria prestatzean '%s'\n"
|
||||
|
||||
@@ -2610,7 +2519,6 @@ msgid "%s: %s is unchanged\n"
|
||||
msgstr "%s: %s ez da aldatu\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to create scratch directory"
|
||||
msgstr "huts egin du postontzia izenez aldatzean"
|
||||
|
||||
@@ -2624,7 +2532,6 @@ msgid "setfscreatecon () failed"
|
||||
msgstr "setfscreatecon () -ek huts egin du"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "failed to gain privileges"
|
||||
msgstr "%s: huts baimenak kentzerakoan (%s)\n"
|
||||
|
||||
@@ -2635,7 +2542,6 @@ msgid "Couldn't make backup"
|
||||
msgstr "Ezin izan da babeskopiarik egin"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
@@ -2648,27 +2554,22 @@ msgid "%s: %s killed by signal %d\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to open scratch file"
|
||||
msgstr "huts egin du postontzia izenez aldatzean"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: failed to unlock %s\n"
|
||||
msgid "failed to unlink scratch file"
|
||||
msgstr "%s: huts %s desblokeatzean\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to stat edited file"
|
||||
msgstr "huts egin du postontzia izenez aldatzean"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to change mailbox owner"
|
||||
msgid "failed to allocate memory"
|
||||
msgstr "huts egin du postontzia jabez aldatzean"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to create backup file"
|
||||
msgstr "huts egin du postontzia izenez aldatzean"
|
||||
|
||||
@@ -2677,7 +2578,6 @@ msgid "%s: can't restore %s: %s (your changes are in %s)\n"
|
||||
msgstr "%s: ezin da %s leheneratu: %s (zure aldaketak %s(e)n daude)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid base directory '%s'\n"
|
||||
msgid "%s: failed to find tcb directory for %s\n"
|
||||
msgstr "%s: oinarrizko '%s' direktorio baliogabea\n"
|
||||
|
||||
@@ -2962,7 +2862,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"
|
||||
|
||||
157
po/fi.po
157
po/fi.po
@@ -84,7 +84,6 @@ msgid "Could not set serange for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Could not allocate space for config info.\n"
|
||||
msgid "Could not set sename for %s\n"
|
||||
msgstr "Asetustiedoille ei voi varata tilaa.\n"
|
||||
|
||||
@@ -93,7 +92,6 @@ msgid "Could not modify login mapping for %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Changing the aging information for %s\n"
|
||||
msgid "Cannot create SELinux login mapping for %s\n"
|
||||
msgstr "Muutetaan käyttäjän %s vanhenemistietoja\n"
|
||||
|
||||
@@ -114,12 +112,10 @@ msgid "Cannot init SELinux management\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "Cannot create SELinux user key\n"
|
||||
msgstr "%s: Käyttäjätunnusta ei voi selvittää.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: cannot find user %s\n"
|
||||
msgid "Cannot verify the SELinux user\n"
|
||||
msgstr "%s: rivi %d: käyttäjää %s ei löydy\n"
|
||||
|
||||
@@ -152,17 +148,14 @@ msgid "%s: out of memory\n"
|
||||
msgstr "%s: muisti loppui\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot update file %s\n"
|
||||
msgid "%s: Cannot stat %s: %s\n"
|
||||
msgstr "%s: tiedostoa %s ei voi päivittää\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home directory '%s'\n"
|
||||
msgid "%s: %s is neither a directory, nor a symlink.\n"
|
||||
msgstr "%s: virheellinen kotihakemisto \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot read symbolic link %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
@@ -171,58 +164,47 @@ msgid "%s: Suspiciously long symlink: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create directory %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot change owner of %s: %s\n"
|
||||
msgstr "%s: varoitus: ei voi poistaa tiedostoa "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot change mode of %s: %s\n"
|
||||
msgstr "%s: varoitus: ei voi poistaa tiedostoa "
|
||||
|
||||
# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon...
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s"
|
||||
msgid "%s: unlink: %s: %s\n"
|
||||
msgstr "%s: rename: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove directory %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot rename %s to %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot remove %s: %s\n"
|
||||
msgstr "%s: varoitus: ei voi poistaa tiedostoa "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create symbolic link %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: Cannot change owners of %s: %s\n"
|
||||
msgstr "%s: varoitus: ei voi poistaa tiedostoa "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot update file %s\n"
|
||||
msgid "%s: Cannot lstat %s: %s\n"
|
||||
msgstr "%s: tiedostoa %s ei voi päivittää\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update shadow file\n"
|
||||
msgid "%s: Warning, user %s has no tcb shadow file.\n"
|
||||
msgstr "%s: varjotiedostoa ei voi päivittää\n"
|
||||
|
||||
@@ -234,12 +216,10 @@ msgstr ""
|
||||
|
||||
# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon...
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s"
|
||||
msgid "%s: mkdir: %s: %s\n"
|
||||
msgstr "%s: rename: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: Cannot open %s: %s\n"
|
||||
msgstr "%s: tiedostoa %s ei voi lukita\n"
|
||||
|
||||
@@ -282,17 +262,14 @@ msgid "Cannot open audit interface - aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Unable to change tty %s"
|
||||
msgid "Unable to change owner or mode of tty stdin: %s"
|
||||
msgstr "Päätettä %s ei voi vaihtaa"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: fields too long\n"
|
||||
msgid "%s: failed to unlock %s\n"
|
||||
msgstr "%s: kentät liian pitkiä\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: "
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
@@ -331,7 +308,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "failed to change mailbox owner"
|
||||
msgid "%s: failed to allocate memory: %s\n"
|
||||
msgstr "postilaatikon omistajan vaihtaminen epäonnistui"
|
||||
|
||||
@@ -407,7 +383,6 @@ msgid "passwd: %s\n"
|
||||
msgstr "passwd: %s\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Password changed."
|
||||
msgid "passwd: password unchanged\n"
|
||||
msgstr "Salasana vaihdettu."
|
||||
|
||||
@@ -431,22 +406,18 @@ msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home phone: '%s'\n"
|
||||
msgid "%s: invalid chroot path '%s'\n"
|
||||
msgstr "%s: virheellinen kotipuhelin: \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
@@ -479,12 +450,10 @@ msgid "Unable to determine your tty name."
|
||||
msgstr "Tty-päätteesi nimeä ei voi selvittää."
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "No\n"
|
||||
msgid "No"
|
||||
msgstr "Ei\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] LOGIN\n"
|
||||
"\n"
|
||||
@@ -517,7 +486,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 ""
|
||||
|
||||
@@ -600,17 +569,14 @@ msgid "%s: Cannot determine your user name.\n"
|
||||
msgstr "%s: Käyttäjätunnusta ei voi selvittää.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: PAM: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't lock files, try again later\n"
|
||||
msgid "%s: cannot lock %s; try again later.\n"
|
||||
msgstr "%s: tiedostoja ei voi lukita, yritä myöhemmin uudelleen\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: cannot open %s\n"
|
||||
msgstr "%s: tiedostoa %s ei voi lukita\n"
|
||||
|
||||
@@ -619,7 +585,6 @@ msgid "%s: failure while writing changes to %s\n"
|
||||
msgstr "%s: fork-kutsu epäonnistui: %s"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to prepare the new %s entry '%s'\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
@@ -640,7 +605,6 @@ msgid "%s: error changing fields\n"
|
||||
msgstr "%s: virhe muutettaessa kenttiä\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [LOGIN]\n"
|
||||
"\n"
|
||||
@@ -669,7 +633,6 @@ msgid "Full Name"
|
||||
msgstr "Koko nimi"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "\t%s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
@@ -713,7 +676,6 @@ msgid "%s: invalid home phone: '%s'\n"
|
||||
msgstr "%s: virheellinen kotipuhelin: \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: '%s' contains illegal characters\n"
|
||||
msgid "%s: '%s' contains non-ASCII characters\n"
|
||||
msgstr "%s: \"%s\" sisältää ei-sallittuja merkkejä\n"
|
||||
|
||||
@@ -742,7 +704,6 @@ msgid "%s: fields too long\n"
|
||||
msgstr "%s: kentät liian pitkiä\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options]\n"
|
||||
"\n"
|
||||
@@ -787,17 +748,14 @@ msgid "%s: line %d: missing new password\n"
|
||||
msgstr "%s: rivi %d: uusi salasana puuttuu\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s does not exist\n"
|
||||
msgid "%s: line %d: group '%s' does not exist\n"
|
||||
msgstr "%s: ryhmää %s ei ole olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: can't update entry\n"
|
||||
msgid "%s: line %d: failed to prepare the new %s entry '%s'\n"
|
||||
msgstr "%s: rivi %d: tietuetta ei voi päivittää\n"
|
||||
|
||||
@@ -820,7 +778,6 @@ msgid "Login Shell"
|
||||
msgstr "Sisäänkirjautumiskuori"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "You may not change the shell for %s.\n"
|
||||
msgid "You may not change the shell for '%s'.\n"
|
||||
msgstr "Et voi muuttaa käyttäjän %s kuorta.\n"
|
||||
|
||||
@@ -833,17 +790,14 @@ msgid "%s: Invalid entry: %s\n"
|
||||
msgstr "%s: Virheellinen tietue: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s is an invalid shell.\n"
|
||||
msgid "%s: %s is an invalid shell\n"
|
||||
msgstr "%s on virheellinen kuori.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s does not exist\n"
|
||||
msgid "%s: Warning: %s does not exist\n"
|
||||
msgstr "%s: käyttäjää %s ei ole olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: %s not owned by %s\n"
|
||||
msgid "%s: Warning: %s is not executable\n"
|
||||
msgstr "%s: varoitus: tiedoston %s omistaja ei ole %s\n"
|
||||
|
||||
@@ -861,7 +815,6 @@ msgid "%s: options %s and %s conflict\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "lastlog: unexpected argument: %s\n"
|
||||
msgid "%s: unexpected argument: %s\n"
|
||||
msgstr "lastlog: odottamaton argumentti: %s\n"
|
||||
|
||||
@@ -892,7 +845,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to get the entry for UID %lu\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
@@ -900,7 +852,6 @@ msgid "Login Failures Maximum Latest On\n"
|
||||
msgstr "Tunnus Epäonn. Enint. Edellinen Päätteellä\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid " [%lds left]"
|
||||
msgid " [%lus left]"
|
||||
msgstr " [%lds jäljellä]"
|
||||
|
||||
@@ -909,17 +860,14 @@ msgid " [%lds lock]"
|
||||
msgstr " [%lds lukittu]"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to reset fail count for UID %lu\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Failed to set max for UID %lu\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to set locktime for UID %lu\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
@@ -928,17 +876,14 @@ msgid "%s: Unknown user or range: %s\n"
|
||||
msgstr "Tuntematon käyttäjä: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot get the size of %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Failed to write %s: %s\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [option] GROUP\n"
|
||||
"\n"
|
||||
@@ -970,12 +915,10 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "The password for %s cannot be changed.\n"
|
||||
msgid "Except for the -A and -M options, the options cannot be combined.\n"
|
||||
msgstr "Käyttäjän %s salasanaa ei voi vaihtaa.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "The password for %s cannot be changed.\n"
|
||||
msgid "The options cannot be combined.\n"
|
||||
msgstr "Käyttäjän %s salasanaa ei voi vaihtaa.\n"
|
||||
|
||||
@@ -984,7 +927,6 @@ msgid "%s: shadow group passwords required for -A\n"
|
||||
msgstr "%s: varjoryhmäsalanat vaaditaan valitsimelle -A\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s does not exist\n"
|
||||
msgid "%s: group '%s' does not exist in %s\n"
|
||||
msgstr "%s: ryhmää %s ei ole olemassa\n"
|
||||
|
||||
@@ -1026,7 +968,6 @@ msgid "%s: Not a tty\n"
|
||||
msgstr "%s: Ei ole pääte\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] GROUP\n"
|
||||
"\n"
|
||||
@@ -1059,7 +1000,6 @@ msgid " -r, --system create a system account\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s is not a valid group name\n"
|
||||
msgid "%s: '%s' is not a valid group name\n"
|
||||
msgstr "%s: %s ei ole kelpo ryhmänimi\n"
|
||||
|
||||
@@ -1072,17 +1012,14 @@ msgid "%s: -K requires KEY=VALUE\n"
|
||||
msgstr "%s: -K vaatii AVAIN=ARVO\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s exists\n"
|
||||
msgid "%s: group '%s' already exists\n"
|
||||
msgstr "%s: ryhmä %s on olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Member already exists\n"
|
||||
msgid "%s: GID '%lu' already exists\n"
|
||||
msgstr "Jäsen on jo olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: Cannot determine your user name.\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: Käyttäjätunnusta ei voi selvittää.\n"
|
||||
|
||||
@@ -1092,7 +1029,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
@@ -1101,12 +1037,10 @@ msgid "%s: cannot remove the primary group of user '%s'\n"
|
||||
msgstr "%s: ei voi vaihtaa käyttäjää \"%s\" NIS-asiakkaalla.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group %s does not exist\n"
|
||||
msgid "%s: group '%s' does not exist\n"
|
||||
msgstr "%s: ryhmää %s ei ole olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: group '%s' is a NIS group.\n"
|
||||
msgid "%s: group '%s' is a NIS group\n"
|
||||
msgstr "%s: ryhmä \"%s\" on NIS-ryhmä.\n"
|
||||
|
||||
@@ -1115,7 +1049,6 @@ msgid "%s: %s is the NIS master\n"
|
||||
msgstr "%s: isäntä %s on NIS-palvelin\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s is a NIS user\n"
|
||||
msgid "%s: user '%s' is already a member of '%s'\n"
|
||||
msgstr "%s: käyttäjä %s on NIS-käyttäjä\n"
|
||||
|
||||
@@ -1124,7 +1057,6 @@ msgid "%s: Out of memory. Cannot update %s.\n"
|
||||
msgstr "%s: muisti loppui funktiossa update_group\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [action]\n"
|
||||
"\n"
|
||||
@@ -1194,7 +1126,6 @@ msgid "%s: unknown user %s\n"
|
||||
msgstr "%s: Tuntematon käyttäjä %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [group [gshadow]]\n"
|
||||
"\n"
|
||||
@@ -1202,7 +1133,6 @@ msgid ""
|
||||
msgstr "Käyttö: %s [syöte]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [group]\n"
|
||||
"\n"
|
||||
@@ -1218,7 +1148,6 @@ msgid " -s, --sort sort entries by UID\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: -s and -r are incompatibile\n"
|
||||
msgid "%s: -s and -r are incompatible\n"
|
||||
msgstr "%s: valitsimet -s ja -r eivät sovi yhteen\n"
|
||||
|
||||
@@ -1237,7 +1166,6 @@ msgid "invalid group name '%s'\n"
|
||||
msgstr "virheellinen ryhmänimi \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "invalid group name '%s'\n"
|
||||
msgid "invalid group ID '%lu'\n"
|
||||
msgstr "virheellinen ryhmänimi \"%s\"\n"
|
||||
|
||||
@@ -1254,7 +1182,6 @@ msgid "no matching group file entry in %s\n"
|
||||
msgstr "ei täsmäävää ryhmätiedostotietuetta tiedostossa %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "add group '%s' in %s ?"
|
||||
msgid "add group '%s' in %s? "
|
||||
msgstr "lisää ryhmä \"%s\" tiedostoon %s?"
|
||||
|
||||
@@ -1290,7 +1217,6 @@ msgid "%s: no changes\n"
|
||||
msgstr "%s: ei muutoksia\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot update file %s\n"
|
||||
msgid "%s: cannot delete %s\n"
|
||||
msgstr "%s: tiedostoa %s ei voi päivittää\n"
|
||||
|
||||
@@ -1336,12 +1262,10 @@ msgid "**Never logged in**"
|
||||
msgstr "**Ei koskaan kirjautunut sisään**"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to update the entry for UID %lu\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update password file\n"
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "%s: salasanatiedostoa ei voi päivittää\n"
|
||||
|
||||
@@ -1394,9 +1318,6 @@ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\""
|
||||
msgstr "Ei utmp-tietuetta. Suorita \"login\" alimman tason kuoresta"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "\n"
|
||||
#| "Login timed out after %d seconds.\n"
|
||||
msgid ""
|
||||
"\n"
|
||||
"Login timed out after %u seconds.\n"
|
||||
@@ -1416,7 +1337,6 @@ msgid "login: "
|
||||
msgstr "tunnus: "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Maximum number of tries exceeded (%d)\n"
|
||||
msgid "Maximum number of tries exceeded (%u)\n"
|
||||
msgstr "Suurin sallittu määrä yrityksiä ylitetty (%d)\n"
|
||||
|
||||
@@ -1427,7 +1347,6 @@ msgid "Login incorrect"
|
||||
msgstr "Sisäänkirjautuminen epäonnistui"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: cannot find user %s\n"
|
||||
msgid "Cannot find user (%s)\n"
|
||||
msgstr "%s: rivi %d: käyttäjää %s ei löydy\n"
|
||||
|
||||
@@ -1471,7 +1390,6 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Usage: id\n"
|
||||
msgid "Usage: logoutd\n"
|
||||
msgstr "Käyttö: id\n"
|
||||
|
||||
@@ -1482,7 +1400,6 @@ msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Käyttö: sg ryhmä [[-c] komento]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
@@ -1509,7 +1426,6 @@ msgid "%s: group '%s' is a shadow group, but does not exist in /etc/group\n"
|
||||
msgstr "%s: ryhmää %s ei ole olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid user name '%s'\n"
|
||||
msgid "%s: invalid user ID '%s'\n"
|
||||
msgstr "%s: virheellinen käyttäjätunnus \"%s\"\n"
|
||||
|
||||
@@ -1542,12 +1458,10 @@ msgid "%s: line %d: can't update password\n"
|
||||
msgstr "%s: rivi %d: salasanaa ei voi päivittää\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: mkdir failed\n"
|
||||
msgid "%s: line %d: mkdir %s failed: %s\n"
|
||||
msgstr "%s: rivi %d: mkdir epäonnistui\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: chown failed\n"
|
||||
msgid "%s: line %d: chown %s failed: %s\n"
|
||||
msgstr "%s: rivi %d: chown epäonnistui\n"
|
||||
|
||||
@@ -1556,7 +1470,6 @@ msgid "%s: line %d: can't update entry\n"
|
||||
msgstr "%s: rivi %d: tietuetta ei voi päivittää\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
@@ -1565,7 +1478,6 @@ msgid "%s: can't find subordinate user range\n"
|
||||
msgstr "%s: tiedostoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't update group file\n"
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "%s: ryhmätiedostoa ei voi päivittää\n"
|
||||
|
||||
@@ -1694,17 +1606,14 @@ msgid "The password for %s is unchanged.\n"
|
||||
msgstr "Käyttäjän %s salasanaa ei vaihdettu.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Password changed."
|
||||
msgid "%s: password changed.\n"
|
||||
msgstr "Salasana vaihdettu."
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Password Expiration Warning"
|
||||
msgid "%s: password expiry information changed.\n"
|
||||
msgstr "Salasanan vanhenemisvaroitus"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [passwd]\n"
|
||||
"\n"
|
||||
@@ -1712,7 +1621,6 @@ msgid ""
|
||||
msgstr "Käyttö: %s [syöte]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] [passwd [shadow]]\n"
|
||||
"\n"
|
||||
@@ -1737,42 +1645,34 @@ msgid "invalid user name '%s'\n"
|
||||
msgstr "virheellinen käyttäjätunnus \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "invalid user name '%s'\n"
|
||||
msgid "invalid user ID '%lu'\n"
|
||||
msgstr "virheellinen käyttäjätunnus \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "user %s: no group %u\n"
|
||||
msgid "user '%s': no group %lu\n"
|
||||
msgstr "käyttäjä %s: ei ryhmää %u\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "user %s: directory %s does not exist\n"
|
||||
msgid "user '%s': directory '%s' does not exist\n"
|
||||
msgstr "käyttäjä %s: hakemistoa %s ei ole olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "user %s: program %s does not exist\n"
|
||||
msgid "user '%s': program '%s' does not exist\n"
|
||||
msgstr "käyttäjä %s: kuorta %s ei ole olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "no tcb directory for %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "create tcb directory for %s?"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "failed to create tcb directory for %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot lock file %s\n"
|
||||
msgid "%s: cannot lock %s.\n"
|
||||
msgstr "%s: tiedostoa %s ei voi lukita\n"
|
||||
|
||||
@@ -1800,12 +1700,10 @@ msgid "user %s: last password change in the future\n"
|
||||
msgstr "käyttäjä %s: viimeisin salasanan vaihto tapahtunut tulevaisuudessa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: cannot sort entries in %s\n"
|
||||
msgstr "%s: tiedostoa %s ei voi lukita\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: can't re-write file\n"
|
||||
msgid "%s: can't work with tcb enabled\n"
|
||||
msgstr "%s: tiedostoa ei voi uudelleenkirjoittaa\n"
|
||||
|
||||
@@ -1823,7 +1721,6 @@ msgid "Please enter your OWN password as authentication.\n"
|
||||
msgstr "Syötä OMA salasanasi todennukseksi.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot lock file %s\n"
|
||||
msgid "%s: Cannot fork user shell\n"
|
||||
msgstr "%s: tiedostoa %s ei voi lukita\n"
|
||||
|
||||
@@ -1893,17 +1790,14 @@ msgid "(Enter your own password)"
|
||||
msgstr "(Syötä oma salasanasi)"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: PAM authentication failed\n"
|
||||
msgid "%s: Authentication failure\n"
|
||||
msgstr "%s: PAM-todennus epäonnistui\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "You are not authorized to su %s\n"
|
||||
msgid "%s: You are not authorized to su at that time\n"
|
||||
msgstr "Sinulla ei ole lupaa asettua käyttäjäksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "No password entry for 'root'"
|
||||
msgid "No passwd entry for user '%s'\n"
|
||||
msgstr "Ei salasanatietuetta pääkäyttäjälle (\"root\")"
|
||||
|
||||
@@ -1916,12 +1810,10 @@ msgid "%s: pam_start: error %d\n"
|
||||
msgstr "%s: pam_start: virhe %d\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot drop the controlling terminal\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Cannot execute %s"
|
||||
msgid "Cannot execute %s\n"
|
||||
msgstr "Ei voi suorittaa %s"
|
||||
|
||||
@@ -1963,18 +1855,15 @@ msgid "%s: cannot open new defaults file\n"
|
||||
msgstr "%s: uutta defaults-tiedostoa ei voi avata\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: line %d: chown failed\n"
|
||||
msgid "%s: line too long in %s: %s..."
|
||||
msgstr "%s: rivi %d: chown epäonnistui\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Cannot create backup file (%s): %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon...
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: rename: %s"
|
||||
msgid "%s: rename: %s: %s\n"
|
||||
msgstr "%s: rename: %s"
|
||||
|
||||
@@ -1987,7 +1876,6 @@ msgid "%s: too many groups specified (max %d).\n"
|
||||
msgstr "%s: liian monta ryhmää määritelty (korkeintaan %d).\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Usage: %s [input]\n"
|
||||
msgid ""
|
||||
"Usage: %s [options] LOGIN\n"
|
||||
" %s -D\n"
|
||||
@@ -2117,7 +2005,6 @@ msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to prepare the new %s entry\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
@@ -2138,7 +2025,6 @@ msgid "Setting mailbox file permissions"
|
||||
msgstr "Asetetaan postilaatikkotiedoston oikeudet"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s exists\n"
|
||||
msgid "%s: user '%s' already exists\n"
|
||||
msgstr "%s: käyttäjä %s on olemassa\n"
|
||||
|
||||
@@ -2154,12 +2040,10 @@ msgid "%s: can't create user\n"
|
||||
msgstr "%s: tiedostoa %s ei voi luoda\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: UID %u is not unique\n"
|
||||
msgid "%s: UID %lu is not unique\n"
|
||||
msgstr "%s: UID %u ei ole ainutkertainen\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to create tcb directory for %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
@@ -2210,25 +2094,20 @@ msgid "%s: group %s not removed because it has other members.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "%s: Cannot remove group %s which is a primary group for another user.\n"
|
||||
msgid "%s: group %s is the primary group of another user and is not removed.\n"
|
||||
msgstr ""
|
||||
"%s: Ryhmää %s ei voi poistaa, koska se on toisen käyttäjän ensisijainen "
|
||||
"ryhmä.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home directory '%s'\n"
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
msgstr "%s: virheellinen kotihakemisto \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: warning: can't remove "
|
||||
msgid "%s: warning: can't remove %s: %s\n"
|
||||
msgstr "%s: varoitus: ei voi poistaa tiedostoa "
|
||||
|
||||
@@ -2241,17 +2120,14 @@ msgid "%s: Can't allocate memory, tcb entry for %s not removed.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: Cannot drop privileges: %s\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove the content of %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot rename directory %s to %s\n"
|
||||
msgid "%s: Cannot remove tcb files for %s: %s\n"
|
||||
msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n"
|
||||
|
||||
@@ -2260,7 +2136,6 @@ msgid "%s: user %s is a NIS user\n"
|
||||
msgstr "%s: käyttäjä %s on NIS-käyttäjä\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid home directory '%s'\n"
|
||||
msgid "%s: %s home directory (%s) not found\n"
|
||||
msgstr "%s: virheellinen kotihakemisto \"%s\"\n"
|
||||
|
||||
@@ -2302,7 +2177,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"
|
||||
@@ -2354,22 +2229,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: user %s exists\n"
|
||||
msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: käyttäjä %s on olemassa\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "%s: virheellinen päiväys \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid date '%s'\n"
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: virheellinen päiväys \"%s\"\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot open file %s\n"
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: tiedostoa %s ei voi lukita\n"
|
||||
|
||||
@@ -2382,7 +2253,6 @@ msgid "%s: shadow passwords required for -e and -f\n"
|
||||
msgstr "%s: varjosalasanat vaaditaan valitsimille -e ja -f\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Member already exists\n"
|
||||
msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "Jäsen on jo olemassa\n"
|
||||
|
||||
@@ -2401,7 +2271,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: cannot create directory %s\n"
|
||||
msgid "%s: Failed to change ownership of the home directory"
|
||||
msgstr "%s: hakemistoa %s ei voi luoda\n"
|
||||
|
||||
@@ -2433,22 +2302,18 @@ msgid "failed to rename mailbox"
|
||||
msgstr "postilaatikon uudelleennimeäminen epäonnistui"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to remove uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to add uid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to remove gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to add gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
@@ -2472,31 +2337,24 @@ msgid " -u, --user which user's tcb shadow file to edit\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "%s: failed to remove %s\n"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid ""
|
||||
#| "\n"
|
||||
#| "%s: %s is unchanged\n"
|
||||
msgid "%s: %s is unchanged\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"%s: tiedostoa %s ei muutettu\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to create scratch directory"
|
||||
msgstr "postilaatikon uudelleennimeäminen epäonnistui"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "failed to drop privileges"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Couldn't lock file"
|
||||
msgid "Couldn't get file context"
|
||||
msgstr "Tiedostoa ei voi lukita"
|
||||
|
||||
@@ -2504,7 +2362,6 @@ msgid "setfscreatecon () failed"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: failed to drop privileges (%s)\n"
|
||||
msgid "failed to gain privileges"
|
||||
msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n"
|
||||
|
||||
@@ -2515,12 +2372,10 @@ msgid "Couldn't make backup"
|
||||
msgstr "Tiedostoa ei voi varmuuskopioida"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s\n"
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: %s not found in /etc/passwd\n"
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: Käyttäjää %s ei löydy tiedostosta /etc/passwd\n"
|
||||
|
||||
@@ -2529,27 +2384,22 @@ msgid "%s: %s killed by signal %d\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Unable to open group file\n"
|
||||
msgid "failed to open scratch file"
|
||||
msgstr "Ryhmätiedostoa ei voi avata\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "%s: fields too long\n"
|
||||
msgid "failed to unlink scratch file"
|
||||
msgstr "%s: kentät liian pitkiä\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to stat edited file"
|
||||
msgstr "postilaatikon uudelleennimeäminen epäonnistui"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to change mailbox owner"
|
||||
msgid "failed to allocate memory"
|
||||
msgstr "postilaatikon omistajan vaihtaminen epäonnistui"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "failed to rename mailbox"
|
||||
msgid "failed to create backup file"
|
||||
msgstr "postilaatikon uudelleennimeäminen epäonnistui"
|
||||
|
||||
@@ -2559,7 +2409,6 @@ msgstr ""
|
||||
"%s: tiedostoa %s ei voi palauttaa: %s (muutoksesi ovat tiedostossa %s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: invalid base directory '%s'\n"
|
||||
msgid "%s: failed to find tcb directory for %s\n"
|
||||
msgstr "%s: virheellinen perushakemisto \"%s\"\n"
|
||||
|
||||
@@ -2890,7 +2739,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"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user