Compare commits
351 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 | ||
|
|
68061f2059 | ||
|
|
67d2bb6e0a | ||
|
|
99b5feadd9 | ||
|
|
507f96cdeb | ||
|
|
6fbc11ce21 | ||
|
|
ff2baed5db | ||
|
|
94da3dc5c8 | ||
|
|
9df58a7545 | ||
|
|
5b017af90d | ||
|
|
a7a7a1fdea | ||
|
|
ca0ccaba27 | ||
|
|
8f1836bad9 | ||
|
|
61fc90b268 | ||
|
|
1d5a926cc2 | ||
|
|
7f5a14817d | ||
|
|
9bf01bf010 | ||
|
|
358bd9b359 | ||
|
|
dd50014055 | ||
|
|
a84b0cafdd | ||
|
|
a4dee3d1ad | ||
|
|
340729bbe8 | ||
|
|
4518826376 | ||
|
|
c07397695a | ||
|
|
aa38e0da9a |
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.3)
|
||||
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
|
||||
|
||||
@@ -44,22 +44,19 @@
|
||||
*/
|
||||
int getulong (const char *numstr, /*@out@*/unsigned long int *result)
|
||||
{
|
||||
long long int val;
|
||||
unsigned long int val;
|
||||
char *endptr;
|
||||
|
||||
errno = 0;
|
||||
val = strtoll (numstr, &endptr, 0);
|
||||
val = strtoul (numstr, &endptr, 0);
|
||||
if ( ('\0' == *numstr)
|
||||
|| ('\0' != *endptr)
|
||||
|| (ERANGE == errno)
|
||||
/*@+ignoresigns@*/
|
||||
|| (val != (unsigned long int)val)
|
||||
/*@=ignoresigns@*/
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*result = (unsigned long int)val;
|
||||
*result = val;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
@@ -83,6 +87,27 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv)
|
||||
free(mappings);
|
||||
return NULL;
|
||||
}
|
||||
if (ULONG_MAX - mapping->upper <= mapping->count || ULONG_MAX - mapping->lower <= mapping->count) {
|
||||
fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (mapping->upper > UINT_MAX ||
|
||||
mapping->lower > UINT_MAX ||
|
||||
mapping->count > UINT_MAX) {
|
||||
fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (mapping->lower + mapping->count > UINT_MAX ||
|
||||
mapping->upper + mapping->count > UINT_MAX) {
|
||||
fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (mapping->lower + mapping->count < mapping->lower ||
|
||||
mapping->upper + mapping->count < mapping->upper) {
|
||||
/* this one really shouldn't be possible given previous checks */
|
||||
fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
return mappings;
|
||||
}
|
||||
@@ -98,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;
|
||||
@@ -108,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);
|
||||
|
||||
@@ -127,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>
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
<para>
|
||||
The default encryption algorithm can be defined for the system with
|
||||
the <option>ENCRYPT_METHOD</option> variable of <filename>/etc/login.defs</filename>,
|
||||
and can be overwiten with the <option>-e</option>,
|
||||
and can be overwritten with the <option>-e</option>,
|
||||
<option>-m</option>, or <option>-c</option> options.
|
||||
</para>
|
||||
<para>
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
The default encryption algorithm can be defined for the system with
|
||||
the <option>ENCRYPT_METHOD</option> or
|
||||
<option>MD5_CRYPT_ENAB</option> variables of
|
||||
<filename>/etc/login.defs</filename>, and can be overwitten with the
|
||||
<filename>/etc/login.defs</filename>, and can be overwritten with the
|
||||
<option>-e</option>, <option>-m</option>, or <option>-c</option>
|
||||
options.
|
||||
</para>
|
||||
@@ -112,7 +112,7 @@
|
||||
<phrase condition="pam">Except when PAM is used to encrypt the
|
||||
passwords,</phrase> <command>chpasswd</command> first updates all the
|
||||
passwords in memory, and then commits all the changes to disk if no
|
||||
errors occured for any user.
|
||||
errors occurred for any user.
|
||||
</para>
|
||||
<para condition="pam">
|
||||
When PAM is used to encrypt the passwords (and update the passwords in
|
||||
|
||||
@@ -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).
|
||||
@@ -106,7 +106,7 @@
|
||||
<varlistentry>
|
||||
<term><option>-a</option>, <option>--add</option> <replaceable>user_name</replaceable></term>
|
||||
<listitem>
|
||||
<para>Add an user to the group membership list.</para>
|
||||
<para>Add a user to the group membership list.</para>
|
||||
<para condition="gshadow">
|
||||
If the <filename>/etc/gshadow</filename> file exist, and the
|
||||
group has no entry in the <filename>/etc/gshadow</filename>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
group (but group members do not need the password).
|
||||
</para>
|
||||
<para>
|
||||
The password is used when an user who is not a member of the
|
||||
The password is used when a user who is not a member of the
|
||||
group wants to gain the permissions of this group (see
|
||||
<citerefentry><refentrytitle>newgrp</refentrytitle>
|
||||
<manvolnum>1</manvolnum></citerefentry>).
|
||||
@@ -105,7 +105,7 @@
|
||||
can gain the group permissions.
|
||||
</para>
|
||||
<para>
|
||||
A password field which starts with a exclamation mark means
|
||||
A password field which starts with an exclamation mark means
|
||||
that the password is locked. The remaining characters on the
|
||||
line represent the password field before the password was
|
||||
locked.
|
||||
|
||||
@@ -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'>
|
||||
@@ -109,7 +110,7 @@
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Clear lastlog record of an user. This option can be used only together
|
||||
Clear lastlog record of a user. This option can be used only together
|
||||
with <option>-u</option> (<option>--user</option>)).
|
||||
</para>
|
||||
</listitem>
|
||||
@@ -140,7 +141,7 @@
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Set lastlog record of an user to the current time. This option can be
|
||||
Set lastlog record of a user to the current time. This option can be
|
||||
used only together with <option>-u</option> (<option>--user</option>)).
|
||||
</para>
|
||||
</listitem>
|
||||
@@ -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>
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
<listitem><para>A: max address space (KB)</para></listitem>
|
||||
<listitem><para>C: max core file size (KB)</para></listitem>
|
||||
<listitem><para>D: max data size (KB)</para></listitem>
|
||||
<listitem><para>F: maximum filesize (KB)</para></listitem>
|
||||
<listitem><para>F: maximum file size (KB)</para></listitem>
|
||||
<listitem><para>K: file creation mask, set by
|
||||
<citerefentry>
|
||||
<refentrytitle>umask</refentrytitle><manvolnum>2</manvolnum>
|
||||
@@ -145,7 +145,7 @@
|
||||
<para>
|
||||
Be aware that after <emphasis remap='I'>username</emphasis> the rest
|
||||
of the line is considered a limit string, thus comments are not
|
||||
allowed. A invalid limits string will be rejected (not considered) by
|
||||
allowed. An invalid limits string will be rejected (not considered) by
|
||||
the <command>login</command> program.
|
||||
</para>
|
||||
|
||||
@@ -163,12 +163,12 @@
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If more than one line with limits for an user exist, only the first line for
|
||||
If more than one line with limits for a user exist, only the first line for
|
||||
this user will be considered.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If no lines are specified for an user, the last
|
||||
If no lines are specified for a user, the last
|
||||
<replaceable>@group</replaceable> line matching a group whose the
|
||||
user is a member of will be considered, or the last line with
|
||||
default limits if no groups contain the user.
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<refsect1 id='description'>
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
The <command>newgidmap</command> sets <filename>/proc/[pid]/gid_map</filename> based on it's
|
||||
The <command>newgidmap</command> sets <filename>/proc/[pid]/gid_map</filename> based on its
|
||||
command line arguments and the gids allowed in <filename>/etc/subgid</filename>.
|
||||
Note that the root user is not exempted from the requirement for a valid
|
||||
<filename>/etc/subgid</filename> entry.
|
||||
@@ -93,7 +93,7 @@
|
||||
<term>gid</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Begining of the range of GIDs inside the user namespace.
|
||||
Beginning of the range of GIDs inside the user namespace.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -101,7 +101,7 @@
|
||||
<term>lowergid</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Begining of the range of GIDs outside the user namespace.
|
||||
Beginning of the range of GIDs outside the user namespace.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -145,7 +145,7 @@
|
||||
<varlistentry>
|
||||
<term><filename>/etc/subgid</filename></term>
|
||||
<listitem>
|
||||
<para>List of users subordinate group IDs.</para>
|
||||
<para>List of user's subordinate group IDs.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<refsect1 id='description'>
|
||||
<title>DESCRIPTION</title>
|
||||
<para>
|
||||
The <command>newuidmap</command> sets <filename>/proc/[pid]/uid_map</filename> based on it's
|
||||
The <command>newuidmap</command> sets <filename>/proc/[pid]/uid_map</filename> based on its
|
||||
command line arguments and the uids allowed in <filename>/etc/subuid</filename>.
|
||||
Note that the root user is not exempted from the requirement for a valid
|
||||
<filename>/etc/subuid</filename> entry.
|
||||
@@ -93,7 +93,7 @@
|
||||
<term>uid</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Begining of the range of UIDs inside the user namespace.
|
||||
Beginning of the range of UIDs inside the user namespace.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -101,7 +101,7 @@
|
||||
<term>loweruid</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Begining of the range of UIDs outside the user namespace.
|
||||
Beginning of the range of UIDs outside the user namespace.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@@ -144,7 +144,7 @@
|
||||
<varlistentry>
|
||||
<term><filename>/etc/subuid</filename></term>
|
||||
<listitem>
|
||||
<para>List of users subordinate user IDs.</para>
|
||||
<para>List of user's subordinate user IDs.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
</para>
|
||||
<para>
|
||||
It can be the name of a new user or the name of an existing
|
||||
user (or an user created before by
|
||||
user (or a user created before by
|
||||
<command>newusers</command>). In case of an existing user,
|
||||
the user's information will be changed, otherwise a new user
|
||||
will be created.
|
||||
@@ -142,7 +142,7 @@
|
||||
This field is used to define the UID of the user.
|
||||
</para>
|
||||
<para>
|
||||
If the field is empty, an new (unused) UID will be defined
|
||||
If the field is empty, a new (unused) UID will be defined
|
||||
automatically by <command>newusers</command>.
|
||||
</para>
|
||||
<para>
|
||||
@@ -151,7 +151,7 @@
|
||||
</para>
|
||||
<para>
|
||||
If this field contains the name of an existing user (or the
|
||||
name of an user created before by
|
||||
name of a user created before by
|
||||
<command>newusers</command>), the UID of the specified user
|
||||
will be used.
|
||||
</para>
|
||||
@@ -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>
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<refsect1 id='history'>
|
||||
<title>HISTORY</title>
|
||||
<para>
|
||||
The <command>nologin</command> command appearred in BSD 4.4.
|
||||
The <command>nologin</command> command appeared in BSD 4.4.
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
@@ -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
|
||||
@@ -164,7 +164,7 @@
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You can find advices on how to choose a strong password on
|
||||
You can find advice on how to choose a strong password on
|
||||
http://en.wikipedia.org/wiki/Password_strength
|
||||
</para>
|
||||
</refsect2>
|
||||
@@ -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>
|
||||
|
||||
417
man/po/da.po
417
man/po/da.po
@@ -20,7 +20,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: shadow-man\n"
|
||||
"POT-Creation-Date: 2013-08-23 01:54+0200\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2013-08-23 01:35+0200\n"
|
||||
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
|
||||
"Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
|
||||
@@ -68,16 +68,15 @@ msgstr ""
|
||||
#: useradd.8.xml:62(surname) suauth.5.xml:45(surname) su.1.xml:62(surname)
|
||||
#: sg.1.xml:46(surname) shadow.5.xml:45(surname) shadow.3.xml:45(surname)
|
||||
#: pwconv.8.xml:51(surname) pwck.8.xml:51(surname) porttime.5.xml:45(surname)
|
||||
#: passwd.5.xml:45(surname) passwd.1.xml:52(surname)
|
||||
#: newusers.8.xml:60(surname) newgrp.1.xml:46(surname)
|
||||
#: logoutd.8.xml:45(surname) login.defs.5.xml:110(surname)
|
||||
#: login.access.5.xml:46(surname) login.1.xml:78(surname)
|
||||
#: limits.5.xml:47(surname) lastlog.8.xml:46(surname) grpck.8.xml:46(surname)
|
||||
#: groups.1.xml:45(surname) groupmod.8.xml:46(surname)
|
||||
#: passwd.5.xml:45(surname) passwd.1.xml:52(surname) newusers.8.xml:60(surname)
|
||||
#: newgrp.1.xml:46(surname) logoutd.8.xml:45(surname)
|
||||
#: login.defs.5.xml:110(surname) login.access.5.xml:46(surname)
|
||||
#: login.1.xml:78(surname) limits.5.xml:47(surname) lastlog.8.xml:46(surname)
|
||||
#: grpck.8.xml:46(surname) groups.1.xml:45(surname) groupmod.8.xml:46(surname)
|
||||
#: groupmems.8.xml:49(surname) groupdel.8.xml:46(surname)
|
||||
#: groupadd.8.xml:48(surname) gpasswd.1.xml:50(surname)
|
||||
#: faillog.8.xml:45(surname) faillog.5.xml:45(surname)
|
||||
#: expiry.1.xml:49(surname) chsh.1.xml:48(surname) chpasswd.8.xml:49(surname)
|
||||
#: faillog.8.xml:45(surname) faillog.5.xml:45(surname) expiry.1.xml:49(surname)
|
||||
#: chsh.1.xml:48(surname) chpasswd.8.xml:49(surname)
|
||||
#: chgpasswd.8.xml:45(surname) chfn.1.xml:48(surname) chage.1.xml:46(surname)
|
||||
msgid "Kłoczko"
|
||||
msgstr ""
|
||||
@@ -102,17 +101,16 @@ msgstr ""
|
||||
#: useradd.8.xml:64(contrib) suauth.5.xml:47(contrib) su.1.xml:64(contrib)
|
||||
#: sg.1.xml:48(contrib) shadow.5.xml:47(contrib) shadow.3.xml:47(contrib)
|
||||
#: pwconv.8.xml:53(contrib) pwck.8.xml:53(contrib) porttime.5.xml:47(contrib)
|
||||
#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib)
|
||||
#: newusers.8.xml:62(contrib) newgrp.1.xml:48(contrib)
|
||||
#: logoutd.8.xml:47(contrib) login.defs.5.xml:112(contrib)
|
||||
#: login.access.5.xml:48(contrib) login.1.xml:80(contrib)
|
||||
#: limits.5.xml:49(contrib) lastlog.8.xml:48(contrib) grpck.8.xml:48(contrib)
|
||||
#: groups.1.xml:47(contrib) groupmod.8.xml:48(contrib)
|
||||
#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib) newusers.8.xml:62(contrib)
|
||||
#: newgrp.1.xml:48(contrib) logoutd.8.xml:47(contrib)
|
||||
#: login.defs.5.xml:112(contrib) login.access.5.xml:48(contrib)
|
||||
#: login.1.xml:80(contrib) limits.5.xml:49(contrib) lastlog.8.xml:48(contrib)
|
||||
#: grpck.8.xml:48(contrib) groups.1.xml:47(contrib) groupmod.8.xml:48(contrib)
|
||||
#: groupmems.8.xml:51(contrib) groupdel.8.xml:48(contrib)
|
||||
#: groupadd.8.xml:50(contrib) gpasswd.1.xml:52(contrib)
|
||||
#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib)
|
||||
#: expiry.1.xml:51(contrib) chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib)
|
||||
#: chfn.1.xml:50(contrib) chage.1.xml:48(contrib)
|
||||
#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib) expiry.1.xml:51(contrib)
|
||||
#: chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib) chfn.1.xml:50(contrib)
|
||||
#: chage.1.xml:48(contrib)
|
||||
msgid "shadow-utils maintainer, 2000 - 2007"
|
||||
msgstr ""
|
||||
|
||||
@@ -146,14 +144,13 @@ msgstr ""
|
||||
#: newusers.8.xml:66(surname) newgrp.1.xml:52(surname)
|
||||
#: logoutd.8.xml:51(surname) login.defs.5.xml:116(surname)
|
||||
#: login.access.5.xml:52(surname) login.1.xml:84(surname)
|
||||
#: limits.5.xml:53(surname) lastlog.8.xml:52(surname)
|
||||
#: gshadow.5.xml:39(surname) grpck.8.xml:52(surname) groups.1.xml:51(surname)
|
||||
#: groupmod.8.xml:52(surname) groupmems.8.xml:55(surname)
|
||||
#: groupdel.8.xml:52(surname) groupadd.8.xml:54(surname)
|
||||
#: gpasswd.1.xml:56(surname) faillog.8.xml:51(surname)
|
||||
#: faillog.5.xml:51(surname) expiry.1.xml:55(surname) chsh.1.xml:54(surname)
|
||||
#: chpasswd.8.xml:55(surname) chgpasswd.8.xml:51(surname)
|
||||
#: chfn.1.xml:54(surname) chage.1.xml:52(surname)
|
||||
#: limits.5.xml:53(surname) lastlog.8.xml:52(surname) gshadow.5.xml:39(surname)
|
||||
#: grpck.8.xml:52(surname) groups.1.xml:51(surname) groupmod.8.xml:52(surname)
|
||||
#: groupmems.8.xml:55(surname) groupdel.8.xml:52(surname)
|
||||
#: groupadd.8.xml:54(surname) gpasswd.1.xml:56(surname)
|
||||
#: faillog.8.xml:51(surname) faillog.5.xml:51(surname) expiry.1.xml:55(surname)
|
||||
#: chsh.1.xml:54(surname) chpasswd.8.xml:55(surname)
|
||||
#: chgpasswd.8.xml:51(surname) chfn.1.xml:54(surname) chage.1.xml:52(surname)
|
||||
msgid "François"
|
||||
msgstr ""
|
||||
|
||||
@@ -182,14 +179,13 @@ msgstr ""
|
||||
#: newusers.8.xml:68(contrib) newgrp.1.xml:54(contrib)
|
||||
#: logoutd.8.xml:53(contrib) login.defs.5.xml:118(contrib)
|
||||
#: login.access.5.xml:54(contrib) login.1.xml:86(contrib)
|
||||
#: limits.5.xml:55(contrib) lastlog.8.xml:54(contrib)
|
||||
#: gshadow.5.xml:42(contrib) grpck.8.xml:54(contrib) groups.1.xml:53(contrib)
|
||||
#: groupmod.8.xml:54(contrib) groupmems.8.xml:57(contrib)
|
||||
#: groupdel.8.xml:54(contrib) groupadd.8.xml:56(contrib)
|
||||
#: gpasswd.1.xml:58(contrib) faillog.8.xml:53(contrib)
|
||||
#: faillog.5.xml:53(contrib) expiry.1.xml:57(contrib) chsh.1.xml:56(contrib)
|
||||
#: chpasswd.8.xml:57(contrib) chgpasswd.8.xml:53(contrib)
|
||||
#: chfn.1.xml:56(contrib) chage.1.xml:54(contrib)
|
||||
#: limits.5.xml:55(contrib) lastlog.8.xml:54(contrib) gshadow.5.xml:42(contrib)
|
||||
#: grpck.8.xml:54(contrib) groups.1.xml:53(contrib) groupmod.8.xml:54(contrib)
|
||||
#: groupmems.8.xml:57(contrib) groupdel.8.xml:54(contrib)
|
||||
#: groupadd.8.xml:56(contrib) gpasswd.1.xml:58(contrib)
|
||||
#: faillog.8.xml:53(contrib) faillog.5.xml:53(contrib) expiry.1.xml:57(contrib)
|
||||
#: chsh.1.xml:56(contrib) chpasswd.8.xml:57(contrib)
|
||||
#: chgpasswd.8.xml:53(contrib) chfn.1.xml:56(contrib) chage.1.xml:54(contrib)
|
||||
msgid "shadow-utils maintainer, 2007 - now"
|
||||
msgstr ""
|
||||
|
||||
@@ -261,14 +257,13 @@ msgstr ""
|
||||
#: useradd.8.xml:88(replaceable) useradd.8.xml:100(replaceable)
|
||||
#: su.1.xml:88(replaceable) pwconv.8.xml:81(replaceable)
|
||||
#: pwconv.8.xml:87(replaceable) pwconv.8.xml:93(replaceable)
|
||||
#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg)
|
||||
#: passwd.1.xml:79(replaceable) newusers.8.xml:87(replaceable)
|
||||
#: lastlog.8.xml:73(replaceable) grpck.8.xml:72(arg)
|
||||
#: groupmod.8.xml:73(replaceable) groupdel.8.xml:73(replaceable)
|
||||
#: groupadd.8.xml:75(replaceable) faillog.8.xml:72(replaceable)
|
||||
#: chsh.1.xml:75(replaceable) chpasswd.8.xml:76(replaceable)
|
||||
#: chgpasswd.8.xml:72(replaceable) chfn.1.xml:75(replaceable)
|
||||
#: chage.1.xml:72(replaceable)
|
||||
#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg) passwd.1.xml:79(replaceable)
|
||||
#: newusers.8.xml:87(replaceable) lastlog.8.xml:73(replaceable)
|
||||
#: grpck.8.xml:72(arg) groupmod.8.xml:73(replaceable)
|
||||
#: groupdel.8.xml:73(replaceable) groupadd.8.xml:75(replaceable)
|
||||
#: faillog.8.xml:72(replaceable) chsh.1.xml:75(replaceable)
|
||||
#: chpasswd.8.xml:76(replaceable) chgpasswd.8.xml:72(replaceable)
|
||||
#: chfn.1.xml:75(replaceable) chage.1.xml:72(replaceable)
|
||||
msgid "options"
|
||||
msgstr "tilvalg"
|
||||
|
||||
@@ -317,11 +312,10 @@ msgstr ""
|
||||
#: useradd.8.xml:124(title) su.1.xml:145(title) pwconv.8.xml:187(title)
|
||||
#: pwck.8.xml:176(title) passwd.1.xml:174(title) newusers.8.xml:265(title)
|
||||
#: login.1.xml:210(title) lastlog.8.xml:91(title) grpck.8.xml:147(title)
|
||||
#: groupmod.8.xml:89(title) groupmems.8.xml:100(title)
|
||||
#: groupdel.8.xml:88(title) groupadd.8.xml:93(title) gpasswd.1.xml:134(title)
|
||||
#: faillog.8.xml:89(title) expiry.1.xml:91(title) chsh.1.xml:95(title)
|
||||
#: chpasswd.8.xml:130(title) chgpasswd.8.xml:105(title) chfn.1.xml:111(title)
|
||||
#: chage.1.xml:91(title)
|
||||
#: groupmod.8.xml:89(title) groupmems.8.xml:100(title) groupdel.8.xml:88(title)
|
||||
#: groupadd.8.xml:93(title) gpasswd.1.xml:134(title) faillog.8.xml:89(title)
|
||||
#: expiry.1.xml:91(title) chsh.1.xml:95(title) chpasswd.8.xml:130(title)
|
||||
#: chgpasswd.8.xml:105(title) chfn.1.xml:111(title) chage.1.xml:91(title)
|
||||
msgid "OPTIONS"
|
||||
msgstr "TILVALG"
|
||||
|
||||
@@ -343,7 +337,7 @@ msgstr "Rediger gruppedatabase."
|
||||
|
||||
#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:266(term)
|
||||
#: pwconv.8.xml:195(term) pwck.8.xml:186(term) passwd.1.xml:214(term)
|
||||
#: newusers.8.xml:283(term) lastlog.8.xml:107(term) grpck.8.xml:157(term)
|
||||
#: newusers.8.xml:283(term) lastlog.8.xml:118(term) grpck.8.xml:157(term)
|
||||
#: groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term)
|
||||
#: groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term)
|
||||
#: expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term)
|
||||
@@ -353,7 +347,7 @@ msgstr "<option>-h</option>, <option>--help</option>"
|
||||
|
||||
#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:268(para)
|
||||
#: pwconv.8.xml:197(para) pwck.8.xml:188(para) passwd.1.xml:216(para)
|
||||
#: newusers.8.xml:285(para) lastlog.8.xml:111(para) grpck.8.xml:159(para)
|
||||
#: newusers.8.xml:285(para) lastlog.8.xml:122(para) grpck.8.xml:159(para)
|
||||
#: groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para)
|
||||
#: groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para)
|
||||
#: expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para)
|
||||
@@ -379,7 +373,7 @@ msgstr "Stille tilstand."
|
||||
|
||||
#: vipw.8.xml:138(term) usermod.8.xml:311(term) userdel.8.xml:146(term)
|
||||
#: useradd.8.xml:445(term) pwconv.8.xml:201(term) pwck.8.xml:209(term)
|
||||
#: passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:115(term)
|
||||
#: passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:126(term)
|
||||
#: grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term)
|
||||
#: groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term)
|
||||
#: chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term)
|
||||
@@ -393,7 +387,7 @@ msgstr ""
|
||||
|
||||
#: vipw.8.xml:142(para) usermod.8.xml:315(para) userdel.8.xml:150(para)
|
||||
#: useradd.8.xml:449(para) pwconv.8.xml:205(para) pwck.8.xml:213(para)
|
||||
#: passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:119(para)
|
||||
#: passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:130(para)
|
||||
#: grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para)
|
||||
#: groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para)
|
||||
#: faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para)
|
||||
@@ -422,18 +416,18 @@ msgstr "<option>-u</option>, <option>--user</option>"
|
||||
msgid "Indicates which user's tcb shadow file to edit."
|
||||
msgstr "Indikerer hvilken brugers tcb-shadowfil at redigere."
|
||||
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:497(title) userdel.8.xml:171(title)
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:496(title) userdel.8.xml:171(title)
|
||||
#: useradd.8.xml:647(title) su.1.xml:339(title) sg.1.xml:98(title)
|
||||
#: pwconv.8.xml:227(title) pwck.8.xml:252(title) passwd.1.xml:390(title)
|
||||
#: newusers.8.xml:362(title) newgrp.1.xml:109(title) login.1.xml:294(title)
|
||||
#: grpck.8.xml:209(title) groupmod.8.xml:193(title) groupmems.8.xml:199(title)
|
||||
#: groupdel.8.xml:128(title) groupadd.8.xml:219(title)
|
||||
#: gpasswd.1.xml:264(title) chsh.1.xml:154(title) chpasswd.8.xml:239(title)
|
||||
#: chgpasswd.8.xml:198(title) chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
#: groupdel.8.xml:128(title) groupadd.8.xml:219(title) gpasswd.1.xml:264(title)
|
||||
#: chsh.1.xml:154(title) chpasswd.8.xml:239(title) chgpasswd.8.xml:198(title)
|
||||
#: chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
msgid "CONFIGURATION"
|
||||
msgstr "KONFIGURATION"
|
||||
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:498(para) userdel.8.xml:172(para)
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:497(para) userdel.8.xml:172(para)
|
||||
#: useradd.8.xml:648(para) su.1.xml:340(para) sg.1.xml:99(para)
|
||||
#: pwck.8.xml:253(para) passwd.1.xml:391(para) newusers.8.xml:363(para)
|
||||
#: newgrp.1.xml:110(para) login.1.xml:295(para) grpck.8.xml:210(para)
|
||||
@@ -488,37 +482,35 @@ msgstr ""
|
||||
"Redigeringsprogram der skal bruges hvis <option>VISUAL</option> ikke er "
|
||||
"angivet."
|
||||
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:514(title) userdel.8.xml:188(title)
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:513(title) userdel.8.xml:188(title)
|
||||
#: useradd.8.xml:675(title) suauth.5.xml:193(title) su.1.xml:367(title)
|
||||
#: sg.1.xml:110(title) shadow.5.xml:255(title) shadow.3.xml:226(title)
|
||||
#: pwconv.8.xml:250(title) pwck.8.xml:269(title) porttime.5.xml:130(title)
|
||||
#: passwd.5.xml:141(title) passwd.1.xml:408(title) newusers.8.xml:397(title)
|
||||
#: newgrp.1.xml:121(title) logoutd.8.xml:89(title)
|
||||
#: login.access.5.xml:121(title) login.1.xml:338(title)
|
||||
#: limits.5.xml:196(title) lastlog.8.xml:182(title) gshadow.5.xml:156(title)
|
||||
#: grpck.8.xml:221(title) groups.1.xml:100(title) groupmod.8.xml:205(title)
|
||||
#: groupmems.8.xml:211(title) groupdel.8.xml:140(title)
|
||||
#: groupadd.8.xml:233(title) gpasswd.1.xml:279(title) faillog.8.xml:243(title)
|
||||
#: faillog.5.xml:96(title) expiry.1.xml:121(title) chsh.1.xml:167(title)
|
||||
#: chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title) chfn.1.xml:207(title)
|
||||
#: chage.1.xml:256(title)
|
||||
#: login.access.5.xml:121(title) login.1.xml:338(title) limits.5.xml:196(title)
|
||||
#: lastlog.8.xml:204(title) gshadow.5.xml:156(title) grpck.8.xml:221(title)
|
||||
#: groups.1.xml:100(title) groupmod.8.xml:205(title) groupmems.8.xml:211(title)
|
||||
#: groupdel.8.xml:140(title) groupadd.8.xml:233(title) gpasswd.1.xml:279(title)
|
||||
#: faillog.8.xml:243(title) faillog.5.xml:96(title) expiry.1.xml:121(title)
|
||||
#: chsh.1.xml:167(title) chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title)
|
||||
#: chfn.1.xml:207(title) chage.1.xml:256(title)
|
||||
msgid "FILES"
|
||||
msgstr "FILER"
|
||||
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:517(filename)
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:516(filename)
|
||||
#: userdel.8.xml:191(filename) useradd.8.xml:690(filename)
|
||||
#: sg.1.xml:125(filename) pwck.8.xml:272(filename)
|
||||
#: newusers.8.xml:412(filename) newgrp.1.xml:136(filename)
|
||||
#: gshadow.5.xml:159(filename) grpck.8.xml:224(filename)
|
||||
#: groups.1.xml:103(filename) groupmod.8.xml:208(filename)
|
||||
#: groupmems.8.xml:214(filename) groupdel.8.xml:143(filename)
|
||||
#: groupadd.8.xml:236(filename) gpasswd.1.xml:72(filename)
|
||||
#: gpasswd.1.xml:75(filename) gpasswd.1.xml:282(filename)
|
||||
#: chgpasswd.8.xml:216(filename)
|
||||
#: sg.1.xml:125(filename) pwck.8.xml:272(filename) newusers.8.xml:412(filename)
|
||||
#: newgrp.1.xml:136(filename) gshadow.5.xml:159(filename)
|
||||
#: grpck.8.xml:224(filename) groups.1.xml:103(filename)
|
||||
#: groupmod.8.xml:208(filename) groupmems.8.xml:214(filename)
|
||||
#: groupdel.8.xml:143(filename) groupadd.8.xml:236(filename)
|
||||
#: gpasswd.1.xml:72(filename) gpasswd.1.xml:75(filename)
|
||||
#: gpasswd.1.xml:282(filename) chgpasswd.8.xml:216(filename)
|
||||
msgid "/etc/group"
|
||||
msgstr "/etc/group"
|
||||
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:519(para) userdel.8.xml:193(para)
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:518(para) userdel.8.xml:193(para)
|
||||
#: useradd.8.xml:692(para) sg.1.xml:127(para) pwck.8.xml:274(para)
|
||||
#: newusers.8.xml:414(para) newgrp.1.xml:138(para) gshadow.5.xml:161(para)
|
||||
#: grpck.8.xml:226(para) groups.1.xml:105(para) groupmod.8.xml:210(para)
|
||||
@@ -527,7 +519,7 @@ msgstr "/etc/group"
|
||||
msgid "Group account information."
|
||||
msgstr "Information om gruppekonto."
|
||||
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:523(filename)
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:522(filename)
|
||||
#: useradd.8.xml:696(filename) sg.1.xml:131(filename)
|
||||
#: newusers.8.xml:418(filename) newgrp.1.xml:142(filename)
|
||||
#: gshadow.5.xml:165(filename) grpck.8.xml:230(filename)
|
||||
@@ -538,7 +530,7 @@ msgstr "Information om gruppekonto."
|
||||
msgid "/etc/gshadow"
|
||||
msgstr "/etc/gshadow"
|
||||
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:525(para) useradd.8.xml:698(para)
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:524(para) useradd.8.xml:698(para)
|
||||
#: sg.1.xml:133(para) newusers.8.xml:420(para) newgrp.1.xml:144(para)
|
||||
#: gshadow.5.xml:167(para) grpck.8.xml:232(para) groupmod.8.xml:216(para)
|
||||
#: groupdel.8.xml:151(para) groupadd.8.xml:244(para) gpasswd.1.xml:290(para)
|
||||
@@ -546,7 +538,7 @@ msgstr "/etc/gshadow"
|
||||
msgid "Secure group account information."
|
||||
msgstr "Information om sikret gruppekonto."
|
||||
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:535(filename)
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:534(filename)
|
||||
#: userdel.8.xml:203(filename) useradd.8.xml:678(filename)
|
||||
#: su.1.xml:370(filename) sg.1.xml:113(filename) shadow.5.xml:258(filename)
|
||||
#: pwck.8.xml:278(filename) passwd.5.xml:144(filename)
|
||||
@@ -559,7 +551,7 @@ msgstr "Information om sikret gruppekonto."
|
||||
msgid "/etc/passwd"
|
||||
msgstr "/etc/passwd"
|
||||
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:537(para) userdel.8.xml:205(para)
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:536(para) userdel.8.xml:205(para)
|
||||
#: useradd.8.xml:680(para) su.1.xml:372(para) sg.1.xml:115(para)
|
||||
#: shadow.5.xml:260(para) pwck.8.xml:280(para) passwd.5.xml:146(para)
|
||||
#: passwd.1.xml:413(para) newusers.8.xml:402(para) newgrp.1.xml:126(para)
|
||||
@@ -569,7 +561,7 @@ msgstr "/etc/passwd"
|
||||
msgid "User account information."
|
||||
msgstr "Information om brugerkonto."
|
||||
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:541(filename)
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:540(filename)
|
||||
#: userdel.8.xml:209(filename) useradd.8.xml:684(filename)
|
||||
#: su.1.xml:376(filename) sg.1.xml:119(filename) shadow.5.xml:264(filename)
|
||||
#: shadow.3.xml:229(filename) pwck.8.xml:284(filename)
|
||||
@@ -580,7 +572,7 @@ msgstr "Information om brugerkonto."
|
||||
msgid "/etc/shadow"
|
||||
msgstr "/etc/shadow"
|
||||
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:543(para) userdel.8.xml:211(para)
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:542(para) userdel.8.xml:211(para)
|
||||
#: useradd.8.xml:686(para) su.1.xml:378(para) sg.1.xml:121(para)
|
||||
#: shadow.5.xml:266(para) shadow.3.xml:231(para) pwck.8.xml:286(para)
|
||||
#: passwd.1.xml:419(para) newusers.8.xml:408(para) newgrp.1.xml:132(para)
|
||||
@@ -589,7 +581,7 @@ msgstr "/etc/shadow"
|
||||
msgid "Secure user account information."
|
||||
msgstr "Information om sikret brugerkonto."
|
||||
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:562(title) userdel.8.xml:308(title)
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:561(title) userdel.8.xml:308(title)
|
||||
#: useradd.8.xml:804(title) suauth.5.xml:222(title) su.1.xml:438(title)
|
||||
#: sg.1.xml:140(title) shadow.5.xml:283(title) shadow.3.xml:238(title)
|
||||
#: pwconv.8.xml:262(title) pwck.8.xml:344(title) porttime.5.xml:142(title)
|
||||
@@ -652,15 +644,15 @@ msgstr ""
|
||||
#: usermod.8.xml:46(surname) userdel.8.xml:46(surname)
|
||||
#: useradd.8.xml:57(surname) su.1.xml:57(surname) sg.1.xml:41(surname)
|
||||
#: shadow.5.xml:40(surname) shadow.3.xml:40(surname) pwck.8.xml:46(surname)
|
||||
#: porttime.5.xml:40(surname) passwd.5.xml:40(surname)
|
||||
#: passwd.1.xml:47(surname) newusers.8.xml:55(surname)
|
||||
#: newgrp.1.xml:41(surname) logoutd.8.xml:40(surname)
|
||||
#: login.defs.5.xml:105(surname) login.1.xml:73(surname)
|
||||
#: lastlog.8.xml:41(surname) grpck.8.xml:41(surname) groups.1.xml:40(surname)
|
||||
#: groupmod.8.xml:41(surname) groupdel.8.xml:41(surname)
|
||||
#: groupadd.8.xml:43(surname) faillog.8.xml:40(surname)
|
||||
#: faillog.5.xml:40(surname) expiry.1.xml:44(surname) chsh.1.xml:43(surname)
|
||||
#: chpasswd.8.xml:44(surname) chfn.1.xml:43(surname) chage.1.xml:41(surname)
|
||||
#: porttime.5.xml:40(surname) passwd.5.xml:40(surname) passwd.1.xml:47(surname)
|
||||
#: newusers.8.xml:55(surname) newgrp.1.xml:41(surname)
|
||||
#: logoutd.8.xml:40(surname) login.defs.5.xml:105(surname)
|
||||
#: login.1.xml:73(surname) lastlog.8.xml:41(surname) grpck.8.xml:41(surname)
|
||||
#: groups.1.xml:40(surname) groupmod.8.xml:41(surname)
|
||||
#: groupdel.8.xml:41(surname) groupadd.8.xml:43(surname)
|
||||
#: faillog.8.xml:40(surname) faillog.5.xml:40(surname) expiry.1.xml:44(surname)
|
||||
#: chsh.1.xml:43(surname) chpasswd.8.xml:44(surname) chfn.1.xml:43(surname)
|
||||
#: chage.1.xml:41(surname)
|
||||
msgid "Haugh"
|
||||
msgstr ""
|
||||
|
||||
@@ -1031,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</"
|
||||
@@ -1060,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> "
|
||||
@@ -1073,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 ""
|
||||
|
||||
@@ -1084,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</"
|
||||
@@ -1107,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> "
|
||||
@@ -1120,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 ""
|
||||
|
||||
@@ -1143,9 +1135,9 @@ msgstr ""
|
||||
|
||||
#: usermod.8.xml:478(title) userdel.8.xml:281(title) useradd.8.xml:623(title)
|
||||
#: su.1.xml:331(title) shadow.3.xml:218(title) passwd.1.xml:372(title)
|
||||
#: newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:194(title)
|
||||
#: groupdel.8.xml:116(title) groupadd.8.xml:257(title)
|
||||
#: gpasswd.1.xml:252(title) faillog.8.xml:232(title) chpasswd.8.xml:231(title)
|
||||
#: newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:216(title)
|
||||
#: groupdel.8.xml:116(title) groupadd.8.xml:257(title) gpasswd.1.xml:252(title)
|
||||
#: faillog.8.xml:232(title) chpasswd.8.xml:231(title)
|
||||
#: chgpasswd.8.xml:186(title)
|
||||
msgid "CAVEATS"
|
||||
msgstr ""
|
||||
@@ -1155,17 +1147,17 @@ msgid ""
|
||||
"You must make certain that the named user is not executing any processes "
|
||||
"when this command is being executed if the user's numerical user ID, the "
|
||||
"user's name, or the user's home directory is being changed. "
|
||||
"<command>usermod</command> checks this on Linux, but only check if the user "
|
||||
"is logged in according to utmp on other architectures."
|
||||
"<command>usermod</command> checks this on Linux. On other platforms it only "
|
||||
"uses utmp to check if the user is logged in."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:487(para)
|
||||
#: usermod.8.xml:486(para)
|
||||
msgid ""
|
||||
"You must change the owner of any <command>crontab</command> files or "
|
||||
"<command>at</command> jobs manually."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:491(para)
|
||||
#: usermod.8.xml:490(para)
|
||||
msgid "You must make any changes involving NIS on the NIS server."
|
||||
msgstr ""
|
||||
|
||||
@@ -1396,7 +1388,7 @@ msgid ""
|
||||
"algorithm: <placeholder-1/>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:529(filename) userdel.8.xml:197(filename)
|
||||
#: usermod.8.xml:528(filename) userdel.8.xml:197(filename)
|
||||
#: useradd.8.xml:726(filename) su.1.xml:382(filename)
|
||||
#: pwconv.8.xml:253(filename) passwd.1.xml:423(filename)
|
||||
#: newusers.8.xml:424(filename) login.access.5.xml:124(filename)
|
||||
@@ -1407,7 +1399,7 @@ msgstr ""
|
||||
msgid "/etc/login.defs"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:531(para) userdel.8.xml:199(para) useradd.8.xml:728(para)
|
||||
#: usermod.8.xml:530(para) userdel.8.xml:199(para) useradd.8.xml:728(para)
|
||||
#: su.1.xml:384(para) pwconv.8.xml:255(para) passwd.1.xml:425(para)
|
||||
#: newusers.8.xml:426(para) login.access.5.xml:126(para) login.1.xml:391(para)
|
||||
#: groupmod.8.xml:222(para) groupadd.8.xml:250(para) chsh.1.xml:184(para)
|
||||
@@ -1415,31 +1407,31 @@ msgstr ""
|
||||
msgid "Shadow password suite configuration."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:547(filename) userdel.8.xml:215(filename)
|
||||
#: usermod.8.xml:546(filename) userdel.8.xml:215(filename)
|
||||
#: useradd.8.xml:714(filename) newusers.8.xml:436(filename)
|
||||
#, fuzzy
|
||||
#| msgid "/etc/suauth"
|
||||
msgid "/etc/subgid"
|
||||
msgstr "/etc/suauth"
|
||||
|
||||
#: usermod.8.xml:549(para) userdel.8.xml:217(para) useradd.8.xml:716(para)
|
||||
#: usermod.8.xml:548(para) userdel.8.xml:217(para) useradd.8.xml:716(para)
|
||||
#: newusers.8.xml:438(para)
|
||||
msgid "Per user subordinate group IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:553(filename) userdel.8.xml:221(filename)
|
||||
#: usermod.8.xml:552(filename) userdel.8.xml:221(filename)
|
||||
#: useradd.8.xml:720(filename) newusers.8.xml:442(filename)
|
||||
#, fuzzy
|
||||
#| msgid "/etc/suauth"
|
||||
msgid "/etc/subuid"
|
||||
msgstr "/etc/suauth"
|
||||
|
||||
#: usermod.8.xml:555(para) userdel.8.xml:223(para) useradd.8.xml:722(para)
|
||||
#: usermod.8.xml:554(para) userdel.8.xml:223(para) useradd.8.xml:722(para)
|
||||
#: newusers.8.xml:444(para)
|
||||
msgid "Per user subordinate user IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:563(para)
|
||||
#: usermod.8.xml:562(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "<citerefentry><refentrytitle>vi</refentrytitle><manvolnum>1</manvolnum></"
|
||||
@@ -1653,9 +1645,8 @@ msgstr ""
|
||||
#: passwd.1.xml:449(replaceable) newgrp.1.xml:59(manvolnum)
|
||||
#: login.1.xml:91(manvolnum) grpck.8.xml:256(replaceable)
|
||||
#: groups.1.xml:58(manvolnum) gpasswd.1.xml:63(manvolnum)
|
||||
#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum)
|
||||
#: chfn.1.xml:61(manvolnum) chage.1.xml:59(manvolnum)
|
||||
#: chage.1.xml:289(replaceable)
|
||||
#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum) chfn.1.xml:61(manvolnum)
|
||||
#: chage.1.xml:59(manvolnum) chage.1.xml:289(replaceable)
|
||||
msgid "1"
|
||||
msgstr ""
|
||||
|
||||
@@ -1976,7 +1967,7 @@ msgid ""
|
||||
"<option>PASS_MAX_DAYS</option> and others). <placeholder-1/> Example: "
|
||||
"<option>-K</option> <replaceable>PASS_MAX_DAYS</"
|
||||
"replaceable>=<replaceable>-1</replaceable> can be used when creating system "
|
||||
"account to turn off password ageing, even though system account has no "
|
||||
"account to turn off password aging, even though system account has no "
|
||||
"password at all. Multiple <option>-K</option> options can be specified, e."
|
||||
"g.: <option>-K</option> <replaceable>UID_MIN</"
|
||||
"replaceable>=<replaceable>100</replaceable> <option>-K</option> "
|
||||
@@ -1994,7 +1985,7 @@ msgstr ""
|
||||
#: useradd.8.xml:327(para)
|
||||
msgid ""
|
||||
"By default, the user's entries in the lastlog and faillog databases are "
|
||||
"resetted to avoid reusing the entry from a previously deleted user."
|
||||
"reset to avoid reusing the entry from a previously deleted user."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:335(term)
|
||||
@@ -2014,9 +2005,11 @@ msgid ""
|
||||
"is not enabled, no home directories are created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:354(option)
|
||||
msgid "-M"
|
||||
msgstr ""
|
||||
#: useradd.8.xml:353(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-c</option>, <option>--crypt-method</option>"
|
||||
msgid "<option>-M</option>, <option>--no-create-home</option>"
|
||||
msgstr "<option>-c</option>, <option>--crypt-method</option>"
|
||||
|
||||
#: useradd.8.xml:357(para)
|
||||
msgid ""
|
||||
@@ -2081,10 +2074,10 @@ msgstr ""
|
||||
#: useradd.8.xml:434(para)
|
||||
msgid ""
|
||||
"Note that <command>useradd</command> will not create a home directory for "
|
||||
"such an user, regardless of the default setting in <filename>/etc/login."
|
||||
"defs</filename> (<option>CREATE_HOME</option>). You have to specify the "
|
||||
"<option>-m</option> options if you want a home directory for a system "
|
||||
"account to be created."
|
||||
"such a user, regardless of the default setting in <filename>/etc/login.defs</"
|
||||
"filename> (<option>CREATE_HOME</option>). You have to specify the <option>-"
|
||||
"m</option> options if you want a home directory for a system account to be "
|
||||
"created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:461(para)
|
||||
@@ -2602,7 +2595,7 @@ msgstr ""
|
||||
#, no-wrap
|
||||
msgid ""
|
||||
"\n"
|
||||
" 1) the user su is targetting\n"
|
||||
" 1) the user su is targeting\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
@@ -2636,12 +2629,12 @@ msgstr ""
|
||||
#: suauth.5.xml:107(para)
|
||||
msgid ""
|
||||
"from-id is formatted the same as to-id except the extra word "
|
||||
"<emphasis>GROUP</emphasis> is recognised. <emphasis>ALL EXCEPT GROUP</"
|
||||
"<emphasis>GROUP</emphasis> is recognized. <emphasis>ALL EXCEPT GROUP</"
|
||||
"emphasis> is perfectly valid too. Following <emphasis>GROUP</emphasis> "
|
||||
"appears one or more group names, delimited by \",\". It is not sufficient to "
|
||||
"have primary group id of the relevant group, an entry in "
|
||||
"<citerefentry><refentrytitle>/etc/group</refentrytitle><manvolnum>5</"
|
||||
"manvolnum></citerefentry> is neccessary."
|
||||
"manvolnum></citerefentry> is necessary."
|
||||
msgstr ""
|
||||
|
||||
#: suauth.5.xml:118(para)
|
||||
@@ -2744,9 +2737,8 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: su.1.xml:58(contrib) shadow.5.xml:41(contrib) shadow.3.xml:41(contrib)
|
||||
#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib)
|
||||
#: passwd.1.xml:48(contrib) login.1.xml:74(contrib) faillog.8.xml:41(contrib)
|
||||
#: faillog.5.xml:41(contrib)
|
||||
#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib) passwd.1.xml:48(contrib)
|
||||
#: login.1.xml:74(contrib) faillog.8.xml:41(contrib) faillog.5.xml:41(contrib)
|
||||
msgid "Creation, 1989"
|
||||
msgstr ""
|
||||
|
||||
@@ -2845,7 +2837,7 @@ msgstr ""
|
||||
#: su.1.xml:158(para)
|
||||
msgid ""
|
||||
"The executed command will have no controlling terminal. This option cannot "
|
||||
"be used to execute interractive programs which need a controlling TTY."
|
||||
"be used to execute interactive programs which need a controlling TTY."
|
||||
msgstr ""
|
||||
|
||||
#: su.1.xml:168(term)
|
||||
@@ -3389,7 +3381,7 @@ msgstr ""
|
||||
|
||||
#: shadow.5.xml:117(para) gshadow.5.xml:107(para)
|
||||
msgid ""
|
||||
"A password field which starts with a exclamation mark means that the "
|
||||
"A password field which starts with an exclamation mark means that the "
|
||||
"password is locked. The remaining characters on the line represent the "
|
||||
"password field before the password was locked."
|
||||
msgstr ""
|
||||
@@ -3407,7 +3399,7 @@ msgstr ""
|
||||
#: shadow.5.xml:134(para)
|
||||
msgid ""
|
||||
"The value 0 has a special meaning, which is that the user should change her "
|
||||
"pasword the next time she will log in the system."
|
||||
"password the next time she will log in the system."
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:139(para)
|
||||
@@ -3507,7 +3499,7 @@ msgstr ""
|
||||
#: shadow.5.xml:229(para)
|
||||
msgid ""
|
||||
"Note that an account expiration differs from a password expiration. In case "
|
||||
"of an acount expiration, the user shall not be allowed to login. In case of "
|
||||
"of an account expiration, the user shall not be allowed to login. In case of "
|
||||
"a password expiration, the user is not allowed to login using her password."
|
||||
msgstr ""
|
||||
|
||||
@@ -3768,18 +3760,15 @@ msgstr ""
|
||||
msgid "pwconv"
|
||||
msgstr ""
|
||||
|
||||
#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command)
|
||||
#: login.defs.5.xml:438(term)
|
||||
#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command) login.defs.5.xml:438(term)
|
||||
msgid "pwunconv"
|
||||
msgstr ""
|
||||
|
||||
#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command)
|
||||
#: login.defs.5.xml:340(term)
|
||||
#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command) login.defs.5.xml:340(term)
|
||||
msgid "grpconv"
|
||||
msgstr ""
|
||||
|
||||
#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command)
|
||||
#: login.defs.5.xml:346(term)
|
||||
#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command) login.defs.5.xml:346(term)
|
||||
msgid "grpunconv"
|
||||
msgstr ""
|
||||
|
||||
@@ -3927,8 +3916,7 @@ msgstr ""
|
||||
|
||||
#: pwck.8.xml:80(replaceable) passwd.5.xml:57(refentrytitle)
|
||||
#: passwd.5.xml:64(refname) passwd.1.xml:64(refentrytitle)
|
||||
#: passwd.1.xml:71(refname) passwd.1.xml:77(command)
|
||||
#: login.defs.5.xml:409(term)
|
||||
#: passwd.1.xml:71(refname) passwd.1.xml:77(command) login.defs.5.xml:409(term)
|
||||
msgid "passwd"
|
||||
msgstr ""
|
||||
|
||||
@@ -4071,7 +4059,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Note that when <option>USE_TCB</option> is enabled, you cannot specify an "
|
||||
"alternative <replaceable>shadow</replaceable> file. In future releases, this "
|
||||
"paramater could be replaced by an alternate TCB directory."
|
||||
"parameter could be replaced by an alternate TCB directory."
|
||||
msgstr ""
|
||||
|
||||
#: pwck.8.xml:312(para)
|
||||
@@ -4319,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 ""
|
||||
@@ -4330,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."
|
||||
@@ -4400,8 +4388,12 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:166(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "You can find advices on how to choose a strong password on http://en."
|
||||
#| "wikipedia.org/wiki/Password_strength"
|
||||
msgid ""
|
||||
"You can find advices on how to choose a strong password on http://en."
|
||||
"You can find advice on how to choose a strong password on http://en."
|
||||
"wikipedia.org/wiki/Password_strength"
|
||||
msgstr ""
|
||||
"Du kan finde råd om hvordan du vælger en god adgangskode på http://en."
|
||||
@@ -4443,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."
|
||||
@@ -4512,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)
|
||||
@@ -4561,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 ""
|
||||
|
||||
@@ -4703,8 +4695,8 @@ msgstr "<option>PASS_MIN_LEN</option> (antal)"
|
||||
#: passwd.1.xml:35(para) login.defs.5.xml:35(para)
|
||||
msgid ""
|
||||
"Number of significant characters in the password for crypt(). "
|
||||
"<option>PASS_MAX_LEN</option> is 8 by default. Don't change unless your crypt"
|
||||
"() is better. This is ignored if <option>MD5_CRYPT_ENAB</option> set to "
|
||||
"<option>PASS_MAX_LEN</option> is 8 by default. Don't change unless your "
|
||||
"crypt() is better. This is ignored if <option>MD5_CRYPT_ENAB</option> set to "
|
||||
"<replaceable>yes</replaceable>."
|
||||
msgstr ""
|
||||
|
||||
@@ -4842,7 +4834,9 @@ msgid "HISTORY"
|
||||
msgstr "HISTORIK"
|
||||
|
||||
#: nologin.8.xml:91(para)
|
||||
msgid "The <command>nologin</command> command appearred in BSD 4.4."
|
||||
#, fuzzy
|
||||
#| msgid "The <command>nologin</command> command appearred in BSD 4.4."
|
||||
msgid "The <command>nologin</command> command appeared in BSD 4.4."
|
||||
msgstr "Kommandoen <command>nologin</command> fremkom i BSD 4.4."
|
||||
|
||||
#: newusers.8.xml:72(refentrytitle) newusers.8.xml:79(refname)
|
||||
@@ -4881,11 +4875,19 @@ msgid "This is the name of the user."
|
||||
msgstr "Dette er navnet på brugeren."
|
||||
|
||||
#: newusers.8.xml:116(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "If this field contains the name of an existing user (or the name of an "
|
||||
#| "user created before by <command>newusers</command>), the UID of the "
|
||||
#| "specified user will be used."
|
||||
msgid ""
|
||||
"It can be the name of a new user or the name of an existing user (or an user "
|
||||
"It can be the name of a new user or the name of an existing user (or a user "
|
||||
"created before by <command>newusers</command>). In case of an existing user, "
|
||||
"the user's information will be changed, otherwise a new user will be created."
|
||||
msgstr ""
|
||||
"Hvis dette felt indeholder navnet på en eksisterende bruger (eller navnet på "
|
||||
"en bruger oprettet før af <command>newusers</command>), så vil UID'en for "
|
||||
"den angivne bruger blive brugt."
|
||||
|
||||
#: newusers.8.xml:127(emphasis)
|
||||
msgid "pw_passwd"
|
||||
@@ -4908,8 +4910,12 @@ msgid "This field is used to define the UID of the user."
|
||||
msgstr "Dette flet bruges til at definere UID for brugeren."
|
||||
|
||||
#: newusers.8.xml:144(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "If the field is empty, an new (unused) UID will be defined automatically "
|
||||
#| "by <command>newusers</command>."
|
||||
msgid ""
|
||||
"If the field is empty, an new (unused) UID will be defined automatically by "
|
||||
"If the field is empty, a new (unused) UID will be defined automatically by "
|
||||
"<command>newusers</command>."
|
||||
msgstr ""
|
||||
"Hvis feltet er tomt, vil en ny (ubrugt) UID blive defineret automatisk af "
|
||||
@@ -4921,8 +4927,13 @@ msgstr ""
|
||||
"Hvis dette felt indeholer et tal, så vil dette tal blive brugt som UID'en."
|
||||
|
||||
#: newusers.8.xml:152(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "If this field contains the name of an existing user (or the name of an "
|
||||
#| "user created before by <command>newusers</command>), the UID of the "
|
||||
#| "specified user will be used."
|
||||
msgid ""
|
||||
"If this field contains the name of an existing user (or the name of an user "
|
||||
"If this field contains the name of an existing user (or the name of a user "
|
||||
"created before by <command>newusers</command>), the UID of the specified "
|
||||
"user will be used."
|
||||
msgstr ""
|
||||
@@ -6181,7 +6192,9 @@ msgid "D: max data size (KB)"
|
||||
msgstr "D: Maks. datastørrelse (KB)"
|
||||
|
||||
#: limits.5.xml:111(para)
|
||||
msgid "F: maximum filesize (KB)"
|
||||
#, fuzzy
|
||||
#| msgid "F: maximum filesize (KB)"
|
||||
msgid "F: maximum file size (KB)"
|
||||
msgstr "F: Maks filstørrelse (KB)"
|
||||
|
||||
#: limits.5.xml:112(para)
|
||||
@@ -6251,7 +6264,7 @@ msgstr ""
|
||||
#: limits.5.xml:145(para)
|
||||
msgid ""
|
||||
"Be aware that after <emphasis remap=\"I\">username</emphasis> the rest of "
|
||||
"the line is considered a limit string, thus comments are not allowed. A "
|
||||
"the line is considered a limit string, thus comments are not allowed. An "
|
||||
"invalid limits string will be rejected (not considered) by the "
|
||||
"<command>login</command> program."
|
||||
msgstr ""
|
||||
@@ -6271,8 +6284,12 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:165(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "If more than one line with limits for an user exist, only the first line "
|
||||
#| "for this user will be considered."
|
||||
msgid ""
|
||||
"If more than one line with limits for an user exist, only the first line for "
|
||||
"If more than one line with limits for a user exist, only the first line for "
|
||||
"this user will be considered."
|
||||
msgstr ""
|
||||
"Hvis mere end en linje med begrænsninger for en bruger findes, så vil kun "
|
||||
@@ -6280,7 +6297,7 @@ msgstr ""
|
||||
|
||||
#: limits.5.xml:170(para)
|
||||
msgid ""
|
||||
"If no lines are specified for an user, the last <replaceable>@group</"
|
||||
"If no lines are specified for a user, the last <replaceable>@group</"
|
||||
"replaceable> line matching a group whose the user is a member of will be "
|
||||
"considered, or the last line with default limits if no groups contain the "
|
||||
"user."
|
||||
@@ -6351,29 +6368,53 @@ msgid ""
|
||||
"Print only lastlog records older than <emphasis remap=\"I\">DAYS</emphasis>."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:127(term) faillog.8.xml:192(term)
|
||||
#: lastlog.8.xml:107(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-u</option>, <option>--user</option>"
|
||||
msgid "<option>-C</option>, <option>--clear</option>"
|
||||
msgstr "<option>-u</option>, <option>--user</option>"
|
||||
|
||||
#: lastlog.8.xml:111(para)
|
||||
msgid ""
|
||||
"Clear lastlog record of a user. This option can be used only together with "
|
||||
"<option>-u</option> (<option>--user</option>))."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:138(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-u</option>, <option>--user</option>"
|
||||
msgid "<option>-S</option>, <option>--set</option>"
|
||||
msgstr "<option>-u</option>, <option>--user</option>"
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
msgid ""
|
||||
"Set lastlog record of a user to the current time. This option can be used "
|
||||
"only together with <option>-u</option> (<option>--user</option>))."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:149(term) faillog.8.xml:192(term)
|
||||
msgid ""
|
||||
"<option>-t</option>, <option>--time</option> <replaceable>DAYS</"
|
||||
"replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:131(para)
|
||||
#: lastlog.8.xml:153(para)
|
||||
msgid ""
|
||||
"Print the lastlog records more recent than <emphasis remap=\"I\">DAYS</"
|
||||
"emphasis>."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:138(term) faillog.8.xml:202(term)
|
||||
#: lastlog.8.xml:160(term) faillog.8.xml:202(term)
|
||||
msgid ""
|
||||
"<option>-u</option>, <option>--user</option> <replaceable>LOGIN</"
|
||||
"replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
#: lastlog.8.xml:164(para)
|
||||
msgid "Print the lastlog record of the specified user(s)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:145(para) faillog.8.xml:211(para)
|
||||
#: lastlog.8.xml:167(para) faillog.8.xml:211(para)
|
||||
msgid ""
|
||||
"The users can be specified by a login name, a numerical user ID, or a "
|
||||
"<replaceable>RANGE</replaceable> of users. This <replaceable>RANGE</"
|
||||
@@ -6382,24 +6423,24 @@ msgid ""
|
||||
"UID_MAX</replaceable>), or a min value (<replaceable>UID_MIN-</replaceable>)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:157(para)
|
||||
#: lastlog.8.xml:179(para)
|
||||
msgid ""
|
||||
"If the user has never logged in the message <emphasis>** Never logged in**</"
|
||||
"emphasis> will be displayed instead of the port and time."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:162(para)
|
||||
#: lastlog.8.xml:184(para)
|
||||
msgid ""
|
||||
"Only the entries for the current users of the system will be displayed. "
|
||||
"Other entries may exist for users that were deleted previously."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:170(title) groups.1.xml:90(title) chsh.1.xml:140(title)
|
||||
#: lastlog.8.xml:192(title) groups.1.xml:90(title) chsh.1.xml:140(title)
|
||||
#: chage.1.xml:231(title)
|
||||
msgid "NOTE"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:171(para)
|
||||
#: lastlog.8.xml:193(para)
|
||||
msgid ""
|
||||
"The <filename>lastlog</filename> file is a database which contains info on "
|
||||
"the last login of each user. You should not rotate it. It is a sparse file, "
|
||||
@@ -6409,15 +6450,15 @@ msgid ""
|
||||
"its real size with \"<command>ls -s</command>\"."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:185(filename)
|
||||
#: lastlog.8.xml:207(filename)
|
||||
msgid "/var/log/lastlog"
|
||||
msgstr "/var/log/lastlog"
|
||||
|
||||
#: lastlog.8.xml:187(para)
|
||||
#: lastlog.8.xml:209(para)
|
||||
msgid "Database times of previous user logins."
|
||||
msgstr "Databasetider for tidligere brugerlogind."
|
||||
|
||||
#: lastlog.8.xml:195(para)
|
||||
#: lastlog.8.xml:217(para)
|
||||
msgid ""
|
||||
"Large gaps in UID numbers will cause the lastlog program to run longer with "
|
||||
"no output to the screen (i.e. if in lastlog database there is no entries for "
|
||||
@@ -6464,11 +6505,19 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: gshadow.5.xml:97(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "The new value of the user's password file comment field. It is normally "
|
||||
#| "modified using the <citerefentry><refentrytitle>chfn</"
|
||||
#| "refentrytitle><manvolnum>1</manvolnum></citerefentry> utility."
|
||||
msgid ""
|
||||
"The password is used when an user who is not a member of the group wants to "
|
||||
"The password is used when a user who is not a member of the group wants to "
|
||||
"gain the permissions of this group (see <citerefentry><refentrytitle>newgrp</"
|
||||
"refentrytitle><manvolnum>1</manvolnum></citerefentry>)."
|
||||
msgstr ""
|
||||
"Den nye værdi for brugerens kommentar kommentarfelt i adgangskodefilen. Den "
|
||||
"ændres normalt med redskabet <citerefentry><refentrytitle>chfn</"
|
||||
"refentrytitle><manvolnum>1</manvolnum></citerefentry>."
|
||||
|
||||
#: gshadow.5.xml:103(para)
|
||||
msgid ""
|
||||
@@ -6843,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)."
|
||||
@@ -6867,7 +6916,9 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: groupmems.8.xml:109(para)
|
||||
msgid "Add an user to the group membership list."
|
||||
#, fuzzy
|
||||
#| msgid "Add an user to the group membership list."
|
||||
msgid "Add a user to the group membership list."
|
||||
msgstr "Tilføj en bruger til listen over gruppemedlemmer."
|
||||
|
||||
#: groupmems.8.xml:110(para) groupmems.8.xml:126(para)
|
||||
@@ -7633,7 +7684,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The default encryption algorithm can be defined for the system with the "
|
||||
"<option>ENCRYPT_METHOD</option> or <option>MD5_CRYPT_ENAB</option> variables "
|
||||
"of <filename>/etc/login.defs</filename>, and can be overwitten with the "
|
||||
"of <filename>/etc/login.defs</filename>, and can be overwritten with the "
|
||||
"<option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
@@ -7648,7 +7699,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"<phrase condition=\"pam\">Except when PAM is used to encrypt the passwords,</"
|
||||
"phrase><command>chpasswd</command> first updates all the passwords in "
|
||||
"memory, and then commits all the changes to disk if no errors occured for "
|
||||
"memory, and then commits all the changes to disk if no errors occurred for "
|
||||
"any user."
|
||||
msgstr ""
|
||||
|
||||
@@ -7778,7 +7829,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The default encryption algorithm can be defined for the system with the "
|
||||
"<option>ENCRYPT_METHOD</option> variable of <filename>/etc/login.defs</"
|
||||
"filename>, and can be overwiten with the <option>-e</option>, <option>-m</"
|
||||
"filename>, and can be overwritten with the <option>-e</option>, <option>-m</"
|
||||
"option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
@@ -7924,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)
|
||||
@@ -8006,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 ""
|
||||
@@ -8029,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 ""
|
||||
|
||||
@@ -8054,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 "
|
||||
|
||||
539
man/po/de.po
539
man/po/de.po
File diff suppressed because it is too large
Load Diff
1351
man/po/fr.po
1351
man/po/fr.po
File diff suppressed because it is too large
Load Diff
527
man/po/it.po
527
man/po/it.po
File diff suppressed because it is too large
Load Diff
385
man/po/pl.po
385
man/po/pl.po
@@ -3,7 +3,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: man pages for shadow 4.0.16\n"
|
||||
"POT-Creation-Date: 2013-08-23 01:54+0200\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2013-08-23 01:38+0200\n"
|
||||
"Last-Translator: Tomasz Kłoczko <kloczek@pld.org.pl>\n"
|
||||
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
|
||||
@@ -51,16 +51,15 @@ msgstr ""
|
||||
#: useradd.8.xml:62(surname) suauth.5.xml:45(surname) su.1.xml:62(surname)
|
||||
#: sg.1.xml:46(surname) shadow.5.xml:45(surname) shadow.3.xml:45(surname)
|
||||
#: pwconv.8.xml:51(surname) pwck.8.xml:51(surname) porttime.5.xml:45(surname)
|
||||
#: passwd.5.xml:45(surname) passwd.1.xml:52(surname)
|
||||
#: newusers.8.xml:60(surname) newgrp.1.xml:46(surname)
|
||||
#: logoutd.8.xml:45(surname) login.defs.5.xml:110(surname)
|
||||
#: login.access.5.xml:46(surname) login.1.xml:78(surname)
|
||||
#: limits.5.xml:47(surname) lastlog.8.xml:46(surname) grpck.8.xml:46(surname)
|
||||
#: groups.1.xml:45(surname) groupmod.8.xml:46(surname)
|
||||
#: passwd.5.xml:45(surname) passwd.1.xml:52(surname) newusers.8.xml:60(surname)
|
||||
#: newgrp.1.xml:46(surname) logoutd.8.xml:45(surname)
|
||||
#: login.defs.5.xml:110(surname) login.access.5.xml:46(surname)
|
||||
#: login.1.xml:78(surname) limits.5.xml:47(surname) lastlog.8.xml:46(surname)
|
||||
#: grpck.8.xml:46(surname) groups.1.xml:45(surname) groupmod.8.xml:46(surname)
|
||||
#: groupmems.8.xml:49(surname) groupdel.8.xml:46(surname)
|
||||
#: groupadd.8.xml:48(surname) gpasswd.1.xml:50(surname)
|
||||
#: faillog.8.xml:45(surname) faillog.5.xml:45(surname)
|
||||
#: expiry.1.xml:49(surname) chsh.1.xml:48(surname) chpasswd.8.xml:49(surname)
|
||||
#: faillog.8.xml:45(surname) faillog.5.xml:45(surname) expiry.1.xml:49(surname)
|
||||
#: chsh.1.xml:48(surname) chpasswd.8.xml:49(surname)
|
||||
#: chgpasswd.8.xml:45(surname) chfn.1.xml:48(surname) chage.1.xml:46(surname)
|
||||
msgid "Kłoczko"
|
||||
msgstr ""
|
||||
@@ -85,17 +84,16 @@ msgstr ""
|
||||
#: useradd.8.xml:64(contrib) suauth.5.xml:47(contrib) su.1.xml:64(contrib)
|
||||
#: sg.1.xml:48(contrib) shadow.5.xml:47(contrib) shadow.3.xml:47(contrib)
|
||||
#: pwconv.8.xml:53(contrib) pwck.8.xml:53(contrib) porttime.5.xml:47(contrib)
|
||||
#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib)
|
||||
#: newusers.8.xml:62(contrib) newgrp.1.xml:48(contrib)
|
||||
#: logoutd.8.xml:47(contrib) login.defs.5.xml:112(contrib)
|
||||
#: login.access.5.xml:48(contrib) login.1.xml:80(contrib)
|
||||
#: limits.5.xml:49(contrib) lastlog.8.xml:48(contrib) grpck.8.xml:48(contrib)
|
||||
#: groups.1.xml:47(contrib) groupmod.8.xml:48(contrib)
|
||||
#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib) newusers.8.xml:62(contrib)
|
||||
#: newgrp.1.xml:48(contrib) logoutd.8.xml:47(contrib)
|
||||
#: login.defs.5.xml:112(contrib) login.access.5.xml:48(contrib)
|
||||
#: login.1.xml:80(contrib) limits.5.xml:49(contrib) lastlog.8.xml:48(contrib)
|
||||
#: grpck.8.xml:48(contrib) groups.1.xml:47(contrib) groupmod.8.xml:48(contrib)
|
||||
#: groupmems.8.xml:51(contrib) groupdel.8.xml:48(contrib)
|
||||
#: groupadd.8.xml:50(contrib) gpasswd.1.xml:52(contrib)
|
||||
#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib)
|
||||
#: expiry.1.xml:51(contrib) chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib)
|
||||
#: chfn.1.xml:50(contrib) chage.1.xml:48(contrib)
|
||||
#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib) expiry.1.xml:51(contrib)
|
||||
#: chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib) chfn.1.xml:50(contrib)
|
||||
#: chage.1.xml:48(contrib)
|
||||
msgid "shadow-utils maintainer, 2000 - 2007"
|
||||
msgstr ""
|
||||
|
||||
@@ -129,14 +127,13 @@ msgstr ""
|
||||
#: newusers.8.xml:66(surname) newgrp.1.xml:52(surname)
|
||||
#: logoutd.8.xml:51(surname) login.defs.5.xml:116(surname)
|
||||
#: login.access.5.xml:52(surname) login.1.xml:84(surname)
|
||||
#: limits.5.xml:53(surname) lastlog.8.xml:52(surname)
|
||||
#: gshadow.5.xml:39(surname) grpck.8.xml:52(surname) groups.1.xml:51(surname)
|
||||
#: groupmod.8.xml:52(surname) groupmems.8.xml:55(surname)
|
||||
#: groupdel.8.xml:52(surname) groupadd.8.xml:54(surname)
|
||||
#: gpasswd.1.xml:56(surname) faillog.8.xml:51(surname)
|
||||
#: faillog.5.xml:51(surname) expiry.1.xml:55(surname) chsh.1.xml:54(surname)
|
||||
#: chpasswd.8.xml:55(surname) chgpasswd.8.xml:51(surname)
|
||||
#: chfn.1.xml:54(surname) chage.1.xml:52(surname)
|
||||
#: limits.5.xml:53(surname) lastlog.8.xml:52(surname) gshadow.5.xml:39(surname)
|
||||
#: grpck.8.xml:52(surname) groups.1.xml:51(surname) groupmod.8.xml:52(surname)
|
||||
#: groupmems.8.xml:55(surname) groupdel.8.xml:52(surname)
|
||||
#: groupadd.8.xml:54(surname) gpasswd.1.xml:56(surname)
|
||||
#: faillog.8.xml:51(surname) faillog.5.xml:51(surname) expiry.1.xml:55(surname)
|
||||
#: chsh.1.xml:54(surname) chpasswd.8.xml:55(surname)
|
||||
#: chgpasswd.8.xml:51(surname) chfn.1.xml:54(surname) chage.1.xml:52(surname)
|
||||
msgid "François"
|
||||
msgstr ""
|
||||
|
||||
@@ -165,14 +162,13 @@ msgstr ""
|
||||
#: newusers.8.xml:68(contrib) newgrp.1.xml:54(contrib)
|
||||
#: logoutd.8.xml:53(contrib) login.defs.5.xml:118(contrib)
|
||||
#: login.access.5.xml:54(contrib) login.1.xml:86(contrib)
|
||||
#: limits.5.xml:55(contrib) lastlog.8.xml:54(contrib)
|
||||
#: gshadow.5.xml:42(contrib) grpck.8.xml:54(contrib) groups.1.xml:53(contrib)
|
||||
#: groupmod.8.xml:54(contrib) groupmems.8.xml:57(contrib)
|
||||
#: groupdel.8.xml:54(contrib) groupadd.8.xml:56(contrib)
|
||||
#: gpasswd.1.xml:58(contrib) faillog.8.xml:53(contrib)
|
||||
#: faillog.5.xml:53(contrib) expiry.1.xml:57(contrib) chsh.1.xml:56(contrib)
|
||||
#: chpasswd.8.xml:57(contrib) chgpasswd.8.xml:53(contrib)
|
||||
#: chfn.1.xml:56(contrib) chage.1.xml:54(contrib)
|
||||
#: limits.5.xml:55(contrib) lastlog.8.xml:54(contrib) gshadow.5.xml:42(contrib)
|
||||
#: grpck.8.xml:54(contrib) groups.1.xml:53(contrib) groupmod.8.xml:54(contrib)
|
||||
#: groupmems.8.xml:57(contrib) groupdel.8.xml:54(contrib)
|
||||
#: groupadd.8.xml:56(contrib) gpasswd.1.xml:58(contrib)
|
||||
#: faillog.8.xml:53(contrib) faillog.5.xml:53(contrib) expiry.1.xml:57(contrib)
|
||||
#: chsh.1.xml:56(contrib) chpasswd.8.xml:57(contrib)
|
||||
#: chgpasswd.8.xml:53(contrib) chfn.1.xml:56(contrib) chage.1.xml:54(contrib)
|
||||
msgid "shadow-utils maintainer, 2007 - now"
|
||||
msgstr ""
|
||||
|
||||
@@ -245,14 +241,13 @@ msgstr "edytuj plik haseł, grup lub ich wersji chronionych"
|
||||
#: useradd.8.xml:88(replaceable) useradd.8.xml:100(replaceable)
|
||||
#: su.1.xml:88(replaceable) pwconv.8.xml:81(replaceable)
|
||||
#: pwconv.8.xml:87(replaceable) pwconv.8.xml:93(replaceable)
|
||||
#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg)
|
||||
#: passwd.1.xml:79(replaceable) newusers.8.xml:87(replaceable)
|
||||
#: lastlog.8.xml:73(replaceable) grpck.8.xml:72(arg)
|
||||
#: groupmod.8.xml:73(replaceable) groupdel.8.xml:73(replaceable)
|
||||
#: groupadd.8.xml:75(replaceable) faillog.8.xml:72(replaceable)
|
||||
#: chsh.1.xml:75(replaceable) chpasswd.8.xml:76(replaceable)
|
||||
#: chgpasswd.8.xml:72(replaceable) chfn.1.xml:75(replaceable)
|
||||
#: chage.1.xml:72(replaceable)
|
||||
#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg) passwd.1.xml:79(replaceable)
|
||||
#: newusers.8.xml:87(replaceable) lastlog.8.xml:73(replaceable)
|
||||
#: grpck.8.xml:72(arg) groupmod.8.xml:73(replaceable)
|
||||
#: groupdel.8.xml:73(replaceable) groupadd.8.xml:75(replaceable)
|
||||
#: faillog.8.xml:72(replaceable) chsh.1.xml:75(replaceable)
|
||||
#: chpasswd.8.xml:76(replaceable) chgpasswd.8.xml:72(replaceable)
|
||||
#: chfn.1.xml:75(replaceable) chage.1.xml:72(replaceable)
|
||||
msgid "options"
|
||||
msgstr "opcje"
|
||||
|
||||
@@ -302,11 +297,10 @@ msgstr ""
|
||||
#: useradd.8.xml:124(title) su.1.xml:145(title) pwconv.8.xml:187(title)
|
||||
#: pwck.8.xml:176(title) passwd.1.xml:174(title) newusers.8.xml:265(title)
|
||||
#: login.1.xml:210(title) lastlog.8.xml:91(title) grpck.8.xml:147(title)
|
||||
#: groupmod.8.xml:89(title) groupmems.8.xml:100(title)
|
||||
#: groupdel.8.xml:88(title) groupadd.8.xml:93(title) gpasswd.1.xml:134(title)
|
||||
#: faillog.8.xml:89(title) expiry.1.xml:91(title) chsh.1.xml:95(title)
|
||||
#: chpasswd.8.xml:130(title) chgpasswd.8.xml:105(title) chfn.1.xml:111(title)
|
||||
#: chage.1.xml:91(title)
|
||||
#: groupmod.8.xml:89(title) groupmems.8.xml:100(title) groupdel.8.xml:88(title)
|
||||
#: groupadd.8.xml:93(title) gpasswd.1.xml:134(title) faillog.8.xml:89(title)
|
||||
#: expiry.1.xml:91(title) chsh.1.xml:95(title) chpasswd.8.xml:130(title)
|
||||
#: chgpasswd.8.xml:105(title) chfn.1.xml:111(title) chage.1.xml:91(title)
|
||||
msgid "OPTIONS"
|
||||
msgstr "OPCJE"
|
||||
|
||||
@@ -329,7 +323,7 @@ msgstr "Edycja bazy grup."
|
||||
|
||||
#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:266(term)
|
||||
#: pwconv.8.xml:195(term) pwck.8.xml:186(term) passwd.1.xml:214(term)
|
||||
#: newusers.8.xml:283(term) lastlog.8.xml:107(term) grpck.8.xml:157(term)
|
||||
#: newusers.8.xml:283(term) lastlog.8.xml:118(term) grpck.8.xml:157(term)
|
||||
#: groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term)
|
||||
#: groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term)
|
||||
#: expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term)
|
||||
@@ -339,7 +333,7 @@ msgstr "<option>-h</option>, <option>--help</option>"
|
||||
|
||||
#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:268(para)
|
||||
#: pwconv.8.xml:197(para) pwck.8.xml:188(para) passwd.1.xml:216(para)
|
||||
#: newusers.8.xml:285(para) lastlog.8.xml:111(para) grpck.8.xml:159(para)
|
||||
#: newusers.8.xml:285(para) lastlog.8.xml:122(para) grpck.8.xml:159(para)
|
||||
#: groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para)
|
||||
#: groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para)
|
||||
#: expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para)
|
||||
@@ -365,7 +359,7 @@ msgstr "Cichy tryb pracy."
|
||||
|
||||
#: vipw.8.xml:138(term) usermod.8.xml:311(term) userdel.8.xml:146(term)
|
||||
#: useradd.8.xml:445(term) pwconv.8.xml:201(term) pwck.8.xml:209(term)
|
||||
#: passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:115(term)
|
||||
#: passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:126(term)
|
||||
#: grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term)
|
||||
#: groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term)
|
||||
#: chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term)
|
||||
@@ -383,7 +377,7 @@ msgstr ""
|
||||
|
||||
#: vipw.8.xml:142(para) usermod.8.xml:315(para) userdel.8.xml:150(para)
|
||||
#: useradd.8.xml:449(para) pwconv.8.xml:205(para) pwck.8.xml:213(para)
|
||||
#: passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:119(para)
|
||||
#: passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:130(para)
|
||||
#: grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para)
|
||||
#: groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para)
|
||||
#: faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para)
|
||||
@@ -415,18 +409,18 @@ msgstr "<option>-q</option>, <option>--quiet</option>"
|
||||
msgid "Indicates which user's tcb shadow file to edit."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:497(title) userdel.8.xml:171(title)
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:496(title) userdel.8.xml:171(title)
|
||||
#: useradd.8.xml:647(title) su.1.xml:339(title) sg.1.xml:98(title)
|
||||
#: pwconv.8.xml:227(title) pwck.8.xml:252(title) passwd.1.xml:390(title)
|
||||
#: newusers.8.xml:362(title) newgrp.1.xml:109(title) login.1.xml:294(title)
|
||||
#: grpck.8.xml:209(title) groupmod.8.xml:193(title) groupmems.8.xml:199(title)
|
||||
#: groupdel.8.xml:128(title) groupadd.8.xml:219(title)
|
||||
#: gpasswd.1.xml:264(title) chsh.1.xml:154(title) chpasswd.8.xml:239(title)
|
||||
#: chgpasswd.8.xml:198(title) chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
#: groupdel.8.xml:128(title) groupadd.8.xml:219(title) gpasswd.1.xml:264(title)
|
||||
#: chsh.1.xml:154(title) chpasswd.8.xml:239(title) chgpasswd.8.xml:198(title)
|
||||
#: chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
msgid "CONFIGURATION"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:498(para) userdel.8.xml:172(para)
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:497(para) userdel.8.xml:172(para)
|
||||
#: useradd.8.xml:648(para) su.1.xml:340(para) sg.1.xml:99(para)
|
||||
#: pwck.8.xml:253(para) passwd.1.xml:391(para) newusers.8.xml:363(para)
|
||||
#: newgrp.1.xml:110(para) login.1.xml:295(para) grpck.8.xml:210(para)
|
||||
@@ -479,37 +473,35 @@ msgstr ""
|
||||
msgid "Editor to be used if <option>VISUAL</option> is not set."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:514(title) userdel.8.xml:188(title)
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:513(title) userdel.8.xml:188(title)
|
||||
#: useradd.8.xml:675(title) suauth.5.xml:193(title) su.1.xml:367(title)
|
||||
#: sg.1.xml:110(title) shadow.5.xml:255(title) shadow.3.xml:226(title)
|
||||
#: pwconv.8.xml:250(title) pwck.8.xml:269(title) porttime.5.xml:130(title)
|
||||
#: passwd.5.xml:141(title) passwd.1.xml:408(title) newusers.8.xml:397(title)
|
||||
#: newgrp.1.xml:121(title) logoutd.8.xml:89(title)
|
||||
#: login.access.5.xml:121(title) login.1.xml:338(title)
|
||||
#: limits.5.xml:196(title) lastlog.8.xml:182(title) gshadow.5.xml:156(title)
|
||||
#: grpck.8.xml:221(title) groups.1.xml:100(title) groupmod.8.xml:205(title)
|
||||
#: groupmems.8.xml:211(title) groupdel.8.xml:140(title)
|
||||
#: groupadd.8.xml:233(title) gpasswd.1.xml:279(title) faillog.8.xml:243(title)
|
||||
#: faillog.5.xml:96(title) expiry.1.xml:121(title) chsh.1.xml:167(title)
|
||||
#: chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title) chfn.1.xml:207(title)
|
||||
#: chage.1.xml:256(title)
|
||||
#: login.access.5.xml:121(title) login.1.xml:338(title) limits.5.xml:196(title)
|
||||
#: lastlog.8.xml:204(title) gshadow.5.xml:156(title) grpck.8.xml:221(title)
|
||||
#: groups.1.xml:100(title) groupmod.8.xml:205(title) groupmems.8.xml:211(title)
|
||||
#: groupdel.8.xml:140(title) groupadd.8.xml:233(title) gpasswd.1.xml:279(title)
|
||||
#: faillog.8.xml:243(title) faillog.5.xml:96(title) expiry.1.xml:121(title)
|
||||
#: chsh.1.xml:167(title) chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title)
|
||||
#: chfn.1.xml:207(title) chage.1.xml:256(title)
|
||||
msgid "FILES"
|
||||
msgstr "PLIKI"
|
||||
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:517(filename)
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:516(filename)
|
||||
#: userdel.8.xml:191(filename) useradd.8.xml:690(filename)
|
||||
#: sg.1.xml:125(filename) pwck.8.xml:272(filename)
|
||||
#: newusers.8.xml:412(filename) newgrp.1.xml:136(filename)
|
||||
#: gshadow.5.xml:159(filename) grpck.8.xml:224(filename)
|
||||
#: groups.1.xml:103(filename) groupmod.8.xml:208(filename)
|
||||
#: groupmems.8.xml:214(filename) groupdel.8.xml:143(filename)
|
||||
#: groupadd.8.xml:236(filename) gpasswd.1.xml:72(filename)
|
||||
#: gpasswd.1.xml:75(filename) gpasswd.1.xml:282(filename)
|
||||
#: chgpasswd.8.xml:216(filename)
|
||||
#: sg.1.xml:125(filename) pwck.8.xml:272(filename) newusers.8.xml:412(filename)
|
||||
#: newgrp.1.xml:136(filename) gshadow.5.xml:159(filename)
|
||||
#: grpck.8.xml:224(filename) groups.1.xml:103(filename)
|
||||
#: groupmod.8.xml:208(filename) groupmems.8.xml:214(filename)
|
||||
#: groupdel.8.xml:143(filename) groupadd.8.xml:236(filename)
|
||||
#: gpasswd.1.xml:72(filename) gpasswd.1.xml:75(filename)
|
||||
#: gpasswd.1.xml:282(filename) chgpasswd.8.xml:216(filename)
|
||||
msgid "/etc/group"
|
||||
msgstr "/etc/group"
|
||||
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:519(para) userdel.8.xml:193(para)
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:518(para) userdel.8.xml:193(para)
|
||||
#: useradd.8.xml:692(para) sg.1.xml:127(para) pwck.8.xml:274(para)
|
||||
#: newusers.8.xml:414(para) newgrp.1.xml:138(para) gshadow.5.xml:161(para)
|
||||
#: grpck.8.xml:226(para) groups.1.xml:105(para) groupmod.8.xml:210(para)
|
||||
@@ -518,7 +510,7 @@ msgstr "/etc/group"
|
||||
msgid "Group account information."
|
||||
msgstr "Informacje o grupach użytkowników."
|
||||
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:523(filename)
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:522(filename)
|
||||
#: useradd.8.xml:696(filename) sg.1.xml:131(filename)
|
||||
#: newusers.8.xml:418(filename) newgrp.1.xml:142(filename)
|
||||
#: gshadow.5.xml:165(filename) grpck.8.xml:230(filename)
|
||||
@@ -529,7 +521,7 @@ msgstr "Informacje o grupach użytkowników."
|
||||
msgid "/etc/gshadow"
|
||||
msgstr "/etc/gshadow"
|
||||
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:525(para) useradd.8.xml:698(para)
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:524(para) useradd.8.xml:698(para)
|
||||
#: sg.1.xml:133(para) newusers.8.xml:420(para) newgrp.1.xml:144(para)
|
||||
#: gshadow.5.xml:167(para) grpck.8.xml:232(para) groupmod.8.xml:216(para)
|
||||
#: groupdel.8.xml:151(para) groupadd.8.xml:244(para) gpasswd.1.xml:290(para)
|
||||
@@ -537,7 +529,7 @@ msgstr "/etc/gshadow"
|
||||
msgid "Secure group account information."
|
||||
msgstr "Informacje chronione o grupach użytkowników."
|
||||
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:535(filename)
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:534(filename)
|
||||
#: userdel.8.xml:203(filename) useradd.8.xml:678(filename)
|
||||
#: su.1.xml:370(filename) sg.1.xml:113(filename) shadow.5.xml:258(filename)
|
||||
#: pwck.8.xml:278(filename) passwd.5.xml:144(filename)
|
||||
@@ -550,7 +542,7 @@ msgstr "Informacje chronione o grupach użytkowników."
|
||||
msgid "/etc/passwd"
|
||||
msgstr "/etc/passwd"
|
||||
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:537(para) userdel.8.xml:205(para)
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:536(para) userdel.8.xml:205(para)
|
||||
#: useradd.8.xml:680(para) su.1.xml:372(para) sg.1.xml:115(para)
|
||||
#: shadow.5.xml:260(para) pwck.8.xml:280(para) passwd.5.xml:146(para)
|
||||
#: passwd.1.xml:413(para) newusers.8.xml:402(para) newgrp.1.xml:126(para)
|
||||
@@ -560,7 +552,7 @@ msgstr "/etc/passwd"
|
||||
msgid "User account information."
|
||||
msgstr "Informacja o kontach użytkowników."
|
||||
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:541(filename)
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:540(filename)
|
||||
#: userdel.8.xml:209(filename) useradd.8.xml:684(filename)
|
||||
#: su.1.xml:376(filename) sg.1.xml:119(filename) shadow.5.xml:264(filename)
|
||||
#: shadow.3.xml:229(filename) pwck.8.xml:284(filename)
|
||||
@@ -571,7 +563,7 @@ msgstr "Informacja o kontach użytkowników."
|
||||
msgid "/etc/shadow"
|
||||
msgstr "/etc/shadow"
|
||||
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:543(para) userdel.8.xml:211(para)
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:542(para) userdel.8.xml:211(para)
|
||||
#: useradd.8.xml:686(para) su.1.xml:378(para) sg.1.xml:121(para)
|
||||
#: shadow.5.xml:266(para) shadow.3.xml:231(para) pwck.8.xml:286(para)
|
||||
#: passwd.1.xml:419(para) newusers.8.xml:408(para) newgrp.1.xml:132(para)
|
||||
@@ -580,7 +572,7 @@ msgstr "/etc/shadow"
|
||||
msgid "Secure user account information."
|
||||
msgstr "Informacje chronione o użytkownikach."
|
||||
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:562(title) userdel.8.xml:308(title)
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:561(title) userdel.8.xml:308(title)
|
||||
#: useradd.8.xml:804(title) suauth.5.xml:222(title) su.1.xml:438(title)
|
||||
#: sg.1.xml:140(title) shadow.5.xml:283(title) shadow.3.xml:238(title)
|
||||
#: pwconv.8.xml:262(title) pwck.8.xml:344(title) porttime.5.xml:142(title)
|
||||
@@ -655,15 +647,15 @@ msgstr ""
|
||||
#: usermod.8.xml:46(surname) userdel.8.xml:46(surname)
|
||||
#: useradd.8.xml:57(surname) su.1.xml:57(surname) sg.1.xml:41(surname)
|
||||
#: shadow.5.xml:40(surname) shadow.3.xml:40(surname) pwck.8.xml:46(surname)
|
||||
#: porttime.5.xml:40(surname) passwd.5.xml:40(surname)
|
||||
#: passwd.1.xml:47(surname) newusers.8.xml:55(surname)
|
||||
#: newgrp.1.xml:41(surname) logoutd.8.xml:40(surname)
|
||||
#: login.defs.5.xml:105(surname) login.1.xml:73(surname)
|
||||
#: lastlog.8.xml:41(surname) grpck.8.xml:41(surname) groups.1.xml:40(surname)
|
||||
#: groupmod.8.xml:41(surname) groupdel.8.xml:41(surname)
|
||||
#: groupadd.8.xml:43(surname) faillog.8.xml:40(surname)
|
||||
#: faillog.5.xml:40(surname) expiry.1.xml:44(surname) chsh.1.xml:43(surname)
|
||||
#: chpasswd.8.xml:44(surname) chfn.1.xml:43(surname) chage.1.xml:41(surname)
|
||||
#: porttime.5.xml:40(surname) passwd.5.xml:40(surname) passwd.1.xml:47(surname)
|
||||
#: newusers.8.xml:55(surname) newgrp.1.xml:41(surname)
|
||||
#: logoutd.8.xml:40(surname) login.defs.5.xml:105(surname)
|
||||
#: login.1.xml:73(surname) lastlog.8.xml:41(surname) grpck.8.xml:41(surname)
|
||||
#: groups.1.xml:40(surname) groupmod.8.xml:41(surname)
|
||||
#: groupdel.8.xml:41(surname) groupadd.8.xml:43(surname)
|
||||
#: faillog.8.xml:40(surname) faillog.5.xml:40(surname) expiry.1.xml:44(surname)
|
||||
#: chsh.1.xml:43(surname) chpasswd.8.xml:44(surname) chfn.1.xml:43(surname)
|
||||
#: chage.1.xml:41(surname)
|
||||
msgid "Haugh"
|
||||
msgstr ""
|
||||
|
||||
@@ -1096,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</"
|
||||
@@ -1125,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</"
|
||||
@@ -1138,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 ""
|
||||
|
||||
@@ -1149,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</"
|
||||
@@ -1172,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</"
|
||||
@@ -1185,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 ""
|
||||
|
||||
@@ -1217,9 +1209,9 @@ msgstr ""
|
||||
|
||||
#: usermod.8.xml:478(title) userdel.8.xml:281(title) useradd.8.xml:623(title)
|
||||
#: su.1.xml:331(title) shadow.3.xml:218(title) passwd.1.xml:372(title)
|
||||
#: newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:194(title)
|
||||
#: groupdel.8.xml:116(title) groupadd.8.xml:257(title)
|
||||
#: gpasswd.1.xml:252(title) faillog.8.xml:232(title) chpasswd.8.xml:231(title)
|
||||
#: newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:216(title)
|
||||
#: groupdel.8.xml:116(title) groupadd.8.xml:257(title) gpasswd.1.xml:252(title)
|
||||
#: faillog.8.xml:232(title) chpasswd.8.xml:231(title)
|
||||
#: chgpasswd.8.xml:186(title)
|
||||
msgid "CAVEATS"
|
||||
msgstr "OSTRZEŻENIA"
|
||||
@@ -1229,17 +1221,17 @@ msgid ""
|
||||
"You must make certain that the named user is not executing any processes "
|
||||
"when this command is being executed if the user's numerical user ID, the "
|
||||
"user's name, or the user's home directory is being changed. "
|
||||
"<command>usermod</command> checks this on Linux, but only check if the user "
|
||||
"is logged in according to utmp on other architectures."
|
||||
"<command>usermod</command> checks this on Linux. On other platforms it only "
|
||||
"uses utmp to check if the user is logged in."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:487(para)
|
||||
#: usermod.8.xml:486(para)
|
||||
msgid ""
|
||||
"You must change the owner of any <command>crontab</command> files or "
|
||||
"<command>at</command> jobs manually."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:491(para)
|
||||
#: usermod.8.xml:490(para)
|
||||
msgid "You must make any changes involving NIS on the NIS server."
|
||||
msgstr ""
|
||||
|
||||
@@ -1455,7 +1447,7 @@ msgid ""
|
||||
"algorithm: <placeholder-1/>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:529(filename) userdel.8.xml:197(filename)
|
||||
#: usermod.8.xml:528(filename) userdel.8.xml:197(filename)
|
||||
#: useradd.8.xml:726(filename) su.1.xml:382(filename)
|
||||
#: pwconv.8.xml:253(filename) passwd.1.xml:423(filename)
|
||||
#: newusers.8.xml:424(filename) login.access.5.xml:124(filename)
|
||||
@@ -1466,7 +1458,7 @@ msgstr ""
|
||||
msgid "/etc/login.defs"
|
||||
msgstr "/etc/login.defs"
|
||||
|
||||
#: usermod.8.xml:531(para) userdel.8.xml:199(para) useradd.8.xml:728(para)
|
||||
#: usermod.8.xml:530(para) userdel.8.xml:199(para) useradd.8.xml:728(para)
|
||||
#: su.1.xml:384(para) pwconv.8.xml:255(para) passwd.1.xml:425(para)
|
||||
#: newusers.8.xml:426(para) login.access.5.xml:126(para) login.1.xml:391(para)
|
||||
#: groupmod.8.xml:222(para) groupadd.8.xml:250(para) chsh.1.xml:184(para)
|
||||
@@ -1474,31 +1466,31 @@ msgstr "/etc/login.defs"
|
||||
msgid "Shadow password suite configuration."
|
||||
msgstr "Konfiguracja pakietu shadow."
|
||||
|
||||
#: usermod.8.xml:547(filename) userdel.8.xml:215(filename)
|
||||
#: usermod.8.xml:546(filename) userdel.8.xml:215(filename)
|
||||
#: useradd.8.xml:714(filename) newusers.8.xml:436(filename)
|
||||
#, fuzzy
|
||||
#| msgid "/etc/suauth"
|
||||
msgid "/etc/subgid"
|
||||
msgstr "/etc/suauth"
|
||||
|
||||
#: usermod.8.xml:549(para) userdel.8.xml:217(para) useradd.8.xml:716(para)
|
||||
#: usermod.8.xml:548(para) userdel.8.xml:217(para) useradd.8.xml:716(para)
|
||||
#: newusers.8.xml:438(para)
|
||||
msgid "Per user subordinate group IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:553(filename) userdel.8.xml:221(filename)
|
||||
#: usermod.8.xml:552(filename) userdel.8.xml:221(filename)
|
||||
#: useradd.8.xml:720(filename) newusers.8.xml:442(filename)
|
||||
#, fuzzy
|
||||
#| msgid "/etc/suauth"
|
||||
msgid "/etc/subuid"
|
||||
msgstr "/etc/suauth"
|
||||
|
||||
#: usermod.8.xml:555(para) userdel.8.xml:223(para) useradd.8.xml:722(para)
|
||||
#: usermod.8.xml:554(para) userdel.8.xml:223(para) useradd.8.xml:722(para)
|
||||
#: newusers.8.xml:444(para)
|
||||
msgid "Per user subordinate user IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:563(para)
|
||||
#: usermod.8.xml:562(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "<citerefentry><refentrytitle>chfn</refentrytitle><manvolnum>1</"
|
||||
@@ -1731,9 +1723,8 @@ msgstr "poprawne zakończenie działania programu"
|
||||
#: passwd.1.xml:449(replaceable) newgrp.1.xml:59(manvolnum)
|
||||
#: login.1.xml:91(manvolnum) grpck.8.xml:256(replaceable)
|
||||
#: groups.1.xml:58(manvolnum) gpasswd.1.xml:63(manvolnum)
|
||||
#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum)
|
||||
#: chfn.1.xml:61(manvolnum) chage.1.xml:59(manvolnum)
|
||||
#: chage.1.xml:289(replaceable)
|
||||
#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum) chfn.1.xml:61(manvolnum)
|
||||
#: chage.1.xml:59(manvolnum) chage.1.xml:289(replaceable)
|
||||
msgid "1"
|
||||
msgstr "1"
|
||||
|
||||
@@ -2099,7 +2090,7 @@ msgid ""
|
||||
"<option>PASS_MAX_DAYS</option> and others). <placeholder-1/> Example: "
|
||||
"<option>-K</option> <replaceable>PASS_MAX_DAYS</"
|
||||
"replaceable>=<replaceable>-1</replaceable> can be used when creating system "
|
||||
"account to turn off password ageing, even though system account has no "
|
||||
"account to turn off password aging, even though system account has no "
|
||||
"password at all. Multiple <option>-K</option> options can be specified, e."
|
||||
"g.: <option>-K</option> <replaceable>UID_MIN</"
|
||||
"replaceable>=<replaceable>100</replaceable> <option>-K</option> "
|
||||
@@ -2119,7 +2110,7 @@ msgstr ""
|
||||
#: useradd.8.xml:327(para)
|
||||
msgid ""
|
||||
"By default, the user's entries in the lastlog and faillog databases are "
|
||||
"resetted to avoid reusing the entry from a previously deleted user."
|
||||
"reset to avoid reusing the entry from a previously deleted user."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:335(term)
|
||||
@@ -2139,11 +2130,11 @@ msgid ""
|
||||
"is not enabled, no home directories are created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:354(option)
|
||||
#: useradd.8.xml:353(term)
|
||||
#, fuzzy
|
||||
#| msgid "-"
|
||||
msgid "-M"
|
||||
msgstr "-"
|
||||
#| msgid "<option>-m</option>, <option>--create-home</option>"
|
||||
msgid "<option>-M</option>, <option>--no-create-home</option>"
|
||||
msgstr "<option>-m</option>, <option>--create-home</option>"
|
||||
|
||||
#: useradd.8.xml:357(para)
|
||||
msgid ""
|
||||
@@ -2218,10 +2209,10 @@ msgstr ""
|
||||
#: useradd.8.xml:434(para)
|
||||
msgid ""
|
||||
"Note that <command>useradd</command> will not create a home directory for "
|
||||
"such an user, regardless of the default setting in <filename>/etc/login."
|
||||
"defs</filename> (<option>CREATE_HOME</option>). You have to specify the "
|
||||
"<option>-m</option> options if you want a home directory for a system "
|
||||
"account to be created."
|
||||
"such a user, regardless of the default setting in <filename>/etc/login.defs</"
|
||||
"filename> (<option>CREATE_HOME</option>). You have to specify the <option>-"
|
||||
"m</option> options if you want a home directory for a system account to be "
|
||||
"created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:461(para)
|
||||
@@ -2766,7 +2757,7 @@ msgstr ""
|
||||
#, no-wrap
|
||||
msgid ""
|
||||
"\n"
|
||||
" 1) the user su is targetting\n"
|
||||
" 1) the user su is targeting\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
@@ -2800,12 +2791,12 @@ msgstr ""
|
||||
#: suauth.5.xml:107(para)
|
||||
msgid ""
|
||||
"from-id is formatted the same as to-id except the extra word "
|
||||
"<emphasis>GROUP</emphasis> is recognised. <emphasis>ALL EXCEPT GROUP</"
|
||||
"<emphasis>GROUP</emphasis> is recognized. <emphasis>ALL EXCEPT GROUP</"
|
||||
"emphasis> is perfectly valid too. Following <emphasis>GROUP</emphasis> "
|
||||
"appears one or more group names, delimited by \",\". It is not sufficient to "
|
||||
"have primary group id of the relevant group, an entry in "
|
||||
"<citerefentry><refentrytitle>/etc/group</refentrytitle><manvolnum>5</"
|
||||
"manvolnum></citerefentry> is neccessary."
|
||||
"manvolnum></citerefentry> is necessary."
|
||||
msgstr ""
|
||||
|
||||
#: suauth.5.xml:118(para)
|
||||
@@ -2910,9 +2901,8 @@ msgstr ""
|
||||
"citerefentry>."
|
||||
|
||||
#: su.1.xml:58(contrib) shadow.5.xml:41(contrib) shadow.3.xml:41(contrib)
|
||||
#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib)
|
||||
#: passwd.1.xml:48(contrib) login.1.xml:74(contrib) faillog.8.xml:41(contrib)
|
||||
#: faillog.5.xml:41(contrib)
|
||||
#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib) passwd.1.xml:48(contrib)
|
||||
#: login.1.xml:74(contrib) faillog.8.xml:41(contrib) faillog.5.xml:41(contrib)
|
||||
msgid "Creation, 1989"
|
||||
msgstr ""
|
||||
|
||||
@@ -3008,7 +2998,7 @@ msgstr ""
|
||||
#: su.1.xml:158(para)
|
||||
msgid ""
|
||||
"The executed command will have no controlling terminal. This option cannot "
|
||||
"be used to execute interractive programs which need a controlling TTY."
|
||||
"be used to execute interactive programs which need a controlling TTY."
|
||||
msgstr ""
|
||||
|
||||
#: su.1.xml:168(term)
|
||||
@@ -3612,7 +3602,7 @@ msgstr ""
|
||||
|
||||
#: shadow.5.xml:117(para) gshadow.5.xml:107(para)
|
||||
msgid ""
|
||||
"A password field which starts with a exclamation mark means that the "
|
||||
"A password field which starts with an exclamation mark means that the "
|
||||
"password is locked. The remaining characters on the line represent the "
|
||||
"password field before the password was locked."
|
||||
msgstr ""
|
||||
@@ -3630,7 +3620,7 @@ msgstr ""
|
||||
#: shadow.5.xml:134(para)
|
||||
msgid ""
|
||||
"The value 0 has a special meaning, which is that the user should change her "
|
||||
"pasword the next time she will log in the system."
|
||||
"password the next time she will log in the system."
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:139(para)
|
||||
@@ -3732,7 +3722,7 @@ msgstr ""
|
||||
#: shadow.5.xml:229(para)
|
||||
msgid ""
|
||||
"Note that an account expiration differs from a password expiration. In case "
|
||||
"of an acount expiration, the user shall not be allowed to login. In case of "
|
||||
"of an account expiration, the user shall not be allowed to login. In case of "
|
||||
"a password expiration, the user is not allowed to login using her password."
|
||||
msgstr ""
|
||||
|
||||
@@ -4026,18 +4016,15 @@ msgstr ""
|
||||
msgid "pwconv"
|
||||
msgstr "pwconv"
|
||||
|
||||
#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command)
|
||||
#: login.defs.5.xml:438(term)
|
||||
#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command) login.defs.5.xml:438(term)
|
||||
msgid "pwunconv"
|
||||
msgstr "pwunconv"
|
||||
|
||||
#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command)
|
||||
#: login.defs.5.xml:340(term)
|
||||
#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command) login.defs.5.xml:340(term)
|
||||
msgid "grpconv"
|
||||
msgstr "grpconv"
|
||||
|
||||
#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command)
|
||||
#: login.defs.5.xml:346(term)
|
||||
#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command) login.defs.5.xml:346(term)
|
||||
msgid "grpunconv"
|
||||
msgstr "grpunconv"
|
||||
|
||||
@@ -4210,8 +4197,7 @@ msgstr ""
|
||||
|
||||
#: pwck.8.xml:80(replaceable) passwd.5.xml:57(refentrytitle)
|
||||
#: passwd.5.xml:64(refname) passwd.1.xml:64(refentrytitle)
|
||||
#: passwd.1.xml:71(refname) passwd.1.xml:77(command)
|
||||
#: login.defs.5.xml:409(term)
|
||||
#: passwd.1.xml:71(refname) passwd.1.xml:77(command) login.defs.5.xml:409(term)
|
||||
msgid "passwd"
|
||||
msgstr "passwd"
|
||||
|
||||
@@ -4361,7 +4347,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Note that when <option>USE_TCB</option> is enabled, you cannot specify an "
|
||||
"alternative <replaceable>shadow</replaceable> file. In future releases, this "
|
||||
"paramater could be replaced by an alternate TCB directory."
|
||||
"parameter could be replaced by an alternate TCB directory."
|
||||
msgstr ""
|
||||
|
||||
#: pwck.8.xml:312(para)
|
||||
@@ -4673,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 ""
|
||||
@@ -4684,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."
|
||||
@@ -4755,7 +4741,7 @@ msgstr ""
|
||||
|
||||
#: passwd.1.xml:166(para)
|
||||
msgid ""
|
||||
"You can find advices on how to choose a strong password on http://en."
|
||||
"You can find advice on how to choose a strong password on http://en."
|
||||
"wikipedia.org/wiki/Password_strength"
|
||||
msgstr ""
|
||||
|
||||
@@ -4790,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)
|
||||
@@ -4859,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 "
|
||||
@@ -4915,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 ""
|
||||
|
||||
@@ -5067,8 +5053,8 @@ msgstr "PASS_MIN_DAYS (numer)"
|
||||
#: passwd.1.xml:35(para) login.defs.5.xml:35(para)
|
||||
msgid ""
|
||||
"Number of significant characters in the password for crypt(). "
|
||||
"<option>PASS_MAX_LEN</option> is 8 by default. Don't change unless your crypt"
|
||||
"() is better. This is ignored if <option>MD5_CRYPT_ENAB</option> set to "
|
||||
"<option>PASS_MAX_LEN</option> is 8 by default. Don't change unless your "
|
||||
"crypt() is better. This is ignored if <option>MD5_CRYPT_ENAB</option> set to "
|
||||
"<replaceable>yes</replaceable>."
|
||||
msgstr ""
|
||||
|
||||
@@ -5226,7 +5212,7 @@ msgid "HISTORY"
|
||||
msgstr ""
|
||||
|
||||
#: nologin.8.xml:91(para)
|
||||
msgid "The <command>nologin</command> command appearred in BSD 4.4."
|
||||
msgid "The <command>nologin</command> command appeared in BSD 4.4."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:72(refentrytitle) newusers.8.xml:79(refname)
|
||||
@@ -5282,7 +5268,7 @@ msgstr ""
|
||||
|
||||
#: newusers.8.xml:116(para)
|
||||
msgid ""
|
||||
"It can be the name of a new user or the name of an existing user (or an user "
|
||||
"It can be the name of a new user or the name of an existing user (or a user "
|
||||
"created before by <command>newusers</command>). In case of an existing user, "
|
||||
"the user's information will be changed, otherwise a new user will be created."
|
||||
msgstr ""
|
||||
@@ -5310,7 +5296,7 @@ msgstr ""
|
||||
|
||||
#: newusers.8.xml:144(para)
|
||||
msgid ""
|
||||
"If the field is empty, an new (unused) UID will be defined automatically by "
|
||||
"If the field is empty, a new (unused) UID will be defined automatically by "
|
||||
"<command>newusers</command>."
|
||||
msgstr ""
|
||||
|
||||
@@ -5320,7 +5306,7 @@ msgstr ""
|
||||
|
||||
#: newusers.8.xml:152(para)
|
||||
msgid ""
|
||||
"If this field contains the name of an existing user (or the name of an user "
|
||||
"If this field contains the name of an existing user (or the name of a user "
|
||||
"created before by <command>newusers</command>), the UID of the specified "
|
||||
"user will be used."
|
||||
msgstr ""
|
||||
@@ -6618,7 +6604,7 @@ msgid "D: max data size (KB)"
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:111(para)
|
||||
msgid "F: maximum filesize (KB)"
|
||||
msgid "F: maximum file size (KB)"
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:112(para)
|
||||
@@ -6692,7 +6678,7 @@ msgstr ""
|
||||
#: limits.5.xml:145(para)
|
||||
msgid ""
|
||||
"Be aware that after <emphasis remap=\"I\">username</emphasis> the rest of "
|
||||
"the line is considered a limit string, thus comments are not allowed. A "
|
||||
"the line is considered a limit string, thus comments are not allowed. An "
|
||||
"invalid limits string will be rejected (not considered) by the "
|
||||
"<command>login</command> program."
|
||||
msgstr ""
|
||||
@@ -6716,13 +6702,13 @@ msgstr ""
|
||||
|
||||
#: limits.5.xml:165(para)
|
||||
msgid ""
|
||||
"If more than one line with limits for an user exist, only the first line for "
|
||||
"If more than one line with limits for a user exist, only the first line for "
|
||||
"this user will be considered."
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:170(para)
|
||||
msgid ""
|
||||
"If no lines are specified for an user, the last <replaceable>@group</"
|
||||
"If no lines are specified for a user, the last <replaceable>@group</"
|
||||
"replaceable> line matching a group whose the user is a member of will be "
|
||||
"considered, or the last line with default limits if no groups contain the "
|
||||
"user."
|
||||
@@ -6810,7 +6796,33 @@ msgstr ""
|
||||
"Wyświetlenie rekordów lastlog starszych niż zadana <emphasis remap=\"I"
|
||||
"\">DNI</emphasis>."
|
||||
|
||||
#: lastlog.8.xml:127(term) faillog.8.xml:192(term)
|
||||
#: lastlog.8.xml:107(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-q</option>, <option>--quiet</option>"
|
||||
msgid "<option>-C</option>, <option>--clear</option>"
|
||||
msgstr "<option>-q</option>, <option>--quiet</option>"
|
||||
|
||||
#: lastlog.8.xml:111(para)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-m</option>, <option>--create-home</option>"
|
||||
msgid ""
|
||||
"Clear lastlog record of a user. This option can be used only together with "
|
||||
"<option>-u</option> (<option>--user</option>))."
|
||||
msgstr "<option>-m</option>, <option>--create-home</option>"
|
||||
|
||||
#: lastlog.8.xml:138(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-r</option>, <option>--reset</option>"
|
||||
msgid "<option>-S</option>, <option>--set</option>"
|
||||
msgstr "<option>-r</option>, <option>--reset</option>"
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
msgid ""
|
||||
"Set lastlog record of a user to the current time. This option can be used "
|
||||
"only together with <option>-u</option> (<option>--user</option>))."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:149(term) faillog.8.xml:192(term)
|
||||
msgid ""
|
||||
"<option>-t</option>, <option>--time</option> <replaceable>DAYS</"
|
||||
"replaceable>"
|
||||
@@ -6818,7 +6830,7 @@ msgstr ""
|
||||
"<option>-t</option>, <option>--time</option> <replaceable>DNI</"
|
||||
"replaceable>"
|
||||
|
||||
#: lastlog.8.xml:131(para)
|
||||
#: lastlog.8.xml:153(para)
|
||||
msgid ""
|
||||
"Print the lastlog records more recent than <emphasis remap=\"I\">DAYS</"
|
||||
"emphasis>."
|
||||
@@ -6826,7 +6838,7 @@ msgstr ""
|
||||
"Wyświetlenie rekordów lastlog nie starszych niż zadana ilość <emphasis remap="
|
||||
"\"I\">DNI</emphasis>."
|
||||
|
||||
#: lastlog.8.xml:138(term) faillog.8.xml:202(term)
|
||||
#: lastlog.8.xml:160(term) faillog.8.xml:202(term)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
@@ -6838,7 +6850,7 @@ msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>KLUCZ</"
|
||||
"replaceable>=<replaceable>WARTOŚĆ</replaceable>"
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
#: lastlog.8.xml:164(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Print the lastlog record for user with specified <emphasis remap=\"I"
|
||||
@@ -6848,7 +6860,7 @@ msgstr ""
|
||||
"Wyświetlenie informacji o ostanim logowaniu dla użytkownika "
|
||||
"<replaceable>LOGIN</replaceable>."
|
||||
|
||||
#: lastlog.8.xml:145(para) faillog.8.xml:211(para)
|
||||
#: lastlog.8.xml:167(para) faillog.8.xml:211(para)
|
||||
msgid ""
|
||||
"The users can be specified by a login name, a numerical user ID, or a "
|
||||
"<replaceable>RANGE</replaceable> of users. This <replaceable>RANGE</"
|
||||
@@ -6857,7 +6869,7 @@ msgid ""
|
||||
"UID_MAX</replaceable>), or a min value (<replaceable>UID_MIN-</replaceable>)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:157(para)
|
||||
#: lastlog.8.xml:179(para)
|
||||
msgid ""
|
||||
"If the user has never logged in the message <emphasis>** Never logged in**</"
|
||||
"emphasis> will be displayed instead of the port and time."
|
||||
@@ -6866,18 +6878,18 @@ msgstr ""
|
||||
"logowania wyświetlany jest komunikat <emphasis>**Nigdy nie zalogowany**</"
|
||||
"emphasis> (użytkownik nigdy się nie logował)."
|
||||
|
||||
#: lastlog.8.xml:162(para)
|
||||
#: lastlog.8.xml:184(para)
|
||||
msgid ""
|
||||
"Only the entries for the current users of the system will be displayed. "
|
||||
"Other entries may exist for users that were deleted previously."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:170(title) groups.1.xml:90(title) chsh.1.xml:140(title)
|
||||
#: lastlog.8.xml:192(title) groups.1.xml:90(title) chsh.1.xml:140(title)
|
||||
#: chage.1.xml:231(title)
|
||||
msgid "NOTE"
|
||||
msgstr "UWAGI"
|
||||
|
||||
#: lastlog.8.xml:171(para)
|
||||
#: lastlog.8.xml:193(para)
|
||||
msgid ""
|
||||
"The <filename>lastlog</filename> file is a database which contains info on "
|
||||
"the last login of each user. You should not rotate it. It is a sparse file, "
|
||||
@@ -6895,15 +6907,15 @@ msgstr ""
|
||||
"wartościami UID). Mozesz wyświetlić rzeczywisty rozmiar tego pliku używając "
|
||||
"polecenia \"<command>ls -s</command>\"."
|
||||
|
||||
#: lastlog.8.xml:185(filename)
|
||||
#: lastlog.8.xml:207(filename)
|
||||
msgid "/var/log/lastlog"
|
||||
msgstr "/var/log/lastlog"
|
||||
|
||||
#: lastlog.8.xml:187(para)
|
||||
#: lastlog.8.xml:209(para)
|
||||
msgid "Database times of previous user logins."
|
||||
msgstr "Baza danych ostatnich logowań użytkowników."
|
||||
|
||||
#: lastlog.8.xml:195(para)
|
||||
#: lastlog.8.xml:217(para)
|
||||
msgid ""
|
||||
"Large gaps in UID numbers will cause the lastlog program to run longer with "
|
||||
"no output to the screen (i.e. if in lastlog database there is no entries for "
|
||||
@@ -6964,7 +6976,7 @@ msgstr ""
|
||||
#| "modified using the <citerefentry><refentrytitle>chfn</"
|
||||
#| "refentrytitle><manvolnum>1</manvolnum></citerefentry> utility."
|
||||
msgid ""
|
||||
"The password is used when an user who is not a member of the group wants to "
|
||||
"The password is used when a user who is not a member of the group wants to "
|
||||
"gain the permissions of this group (see <citerefentry><refentrytitle>newgrp</"
|
||||
"refentrytitle><manvolnum>1</manvolnum></citerefentry>)."
|
||||
msgstr ""
|
||||
@@ -7443,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)."
|
||||
@@ -7473,7 +7485,7 @@ msgstr ""
|
||||
"replaceable>"
|
||||
|
||||
#: groupmems.8.xml:109(para)
|
||||
msgid "Add an user to the group membership list."
|
||||
msgid "Add a user to the group membership list."
|
||||
msgstr ""
|
||||
|
||||
#: groupmems.8.xml:110(para) groupmems.8.xml:126(para)
|
||||
@@ -8461,7 +8473,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The default encryption algorithm can be defined for the system with the "
|
||||
"<option>ENCRYPT_METHOD</option> or <option>MD5_CRYPT_ENAB</option> variables "
|
||||
"of <filename>/etc/login.defs</filename>, and can be overwitten with the "
|
||||
"of <filename>/etc/login.defs</filename>, and can be overwritten with the "
|
||||
"<option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
@@ -8476,7 +8488,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"<phrase condition=\"pam\">Except when PAM is used to encrypt the passwords,</"
|
||||
"phrase><command>chpasswd</command> first updates all the passwords in "
|
||||
"memory, and then commits all the changes to disk if no errors occured for "
|
||||
"memory, and then commits all the changes to disk if no errors occurred for "
|
||||
"any user."
|
||||
msgstr ""
|
||||
|
||||
@@ -8643,7 +8655,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The default encryption algorithm can be defined for the system with the "
|
||||
"<option>ENCRYPT_METHOD</option> variable of <filename>/etc/login.defs</"
|
||||
"filename>, and can be overwiten with the <option>-e</option>, <option>-m</"
|
||||
"filename>, and can be overwritten with the <option>-e</option>, <option>-m</"
|
||||
"option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
@@ -8821,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 "
|
||||
@@ -8935,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 ""
|
||||
@@ -8968,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 "
|
||||
@@ -9001,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 "
|
||||
@@ -9028,6 +9040,11 @@ msgstr ""
|
||||
msgid "translator-credits"
|
||||
msgstr "Tomasz Kłoczko <kloczek@pld.org.pl>, 2006"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "-"
|
||||
#~ msgid "-M"
|
||||
#~ msgstr "-"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "<citerefentry><refentrytitle>chfn</refentrytitle><manvolnum>1</"
|
||||
#~ "manvolnum></citerefentry>, <citerefentry><refentrytitle>chsh</"
|
||||
|
||||
525
man/po/ru.po
525
man/po/ru.po
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2013-08-23 01:54+0200\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -105,11 +105,11 @@ msgstr ""
|
||||
msgid "Edit group database."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:266(term) pwconv.8.xml:195(term) pwck.8.xml:186(term) passwd.1.xml:214(term) newusers.8.xml:283(term) lastlog.8.xml:107(term) grpck.8.xml:157(term) groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term) groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term) expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term) chgpasswd.8.xml:131(term) chage.1.xml:129(term)
|
||||
#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:266(term) pwconv.8.xml:195(term) pwck.8.xml:186(term) passwd.1.xml:214(term) newusers.8.xml:283(term) lastlog.8.xml:118(term) grpck.8.xml:157(term) groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term) groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term) expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term) chgpasswd.8.xml:131(term) chage.1.xml:129(term)
|
||||
msgid "<option>-h</option>, <option>--help</option>"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:268(para) pwconv.8.xml:197(para) pwck.8.xml:188(para) passwd.1.xml:216(para) newusers.8.xml:285(para) lastlog.8.xml:111(para) grpck.8.xml:159(para) groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para) groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para) expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para) chgpasswd.8.xml:133(para) chfn.1.xml:169(para) chage.1.xml:131(para)
|
||||
#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:268(para) pwconv.8.xml:197(para) pwck.8.xml:188(para) passwd.1.xml:216(para) newusers.8.xml:285(para) lastlog.8.xml:122(para) grpck.8.xml:159(para) groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para) groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para) expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para) chgpasswd.8.xml:133(para) chfn.1.xml:169(para) chage.1.xml:131(para)
|
||||
msgid "Display help message and exit."
|
||||
msgstr ""
|
||||
|
||||
@@ -129,11 +129,11 @@ msgstr ""
|
||||
msgid "Quiet mode."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:138(term) usermod.8.xml:311(term) userdel.8.xml:146(term) useradd.8.xml:445(term) pwconv.8.xml:201(term) pwck.8.xml:209(term) passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:115(term) grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term) groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term) chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term) chfn.1.xml:153(term) chage.1.xml:197(term)
|
||||
#: vipw.8.xml:138(term) usermod.8.xml:311(term) userdel.8.xml:146(term) useradd.8.xml:445(term) pwconv.8.xml:201(term) pwck.8.xml:209(term) passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:126(term) grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term) groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term) chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term) chfn.1.xml:153(term) chage.1.xml:197(term)
|
||||
msgid "<option>-R</option>, <option>--root</option> <replaceable>CHROOT_DIR</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:142(para) usermod.8.xml:315(para) userdel.8.xml:150(para) useradd.8.xml:449(para) pwconv.8.xml:205(para) pwck.8.xml:213(para) passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:119(para) grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para) groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para) faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para) chgpasswd.8.xml:150(para) chfn.1.xml:157(para) chage.1.xml:201(para)
|
||||
#: vipw.8.xml:142(para) usermod.8.xml:315(para) userdel.8.xml:150(para) useradd.8.xml:449(para) pwconv.8.xml:205(para) pwck.8.xml:213(para) passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:130(para) grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para) groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para) faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para) chgpasswd.8.xml:150(para) chfn.1.xml:157(para) chage.1.xml:201(para)
|
||||
msgid "Apply changes in the <replaceable>CHROOT_DIR</replaceable> directory and use the configuration files from the <replaceable>CHROOT_DIR</replaceable> directory."
|
||||
msgstr ""
|
||||
|
||||
@@ -153,11 +153,11 @@ msgstr ""
|
||||
msgid "Indicates which user's tcb shadow file to edit."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:497(title) userdel.8.xml:171(title) useradd.8.xml:647(title) su.1.xml:339(title) sg.1.xml:98(title) pwconv.8.xml:227(title) pwck.8.xml:252(title) passwd.1.xml:390(title) newusers.8.xml:362(title) newgrp.1.xml:109(title) login.1.xml:294(title) grpck.8.xml:209(title) groupmod.8.xml:193(title) groupmems.8.xml:199(title) groupdel.8.xml:128(title) groupadd.8.xml:219(title) gpasswd.1.xml:264(title) chsh.1.xml:154(title) chpasswd.8.xml:239(title) chgpasswd.8.xml:198(title) chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:496(title) userdel.8.xml:171(title) useradd.8.xml:647(title) su.1.xml:339(title) sg.1.xml:98(title) pwconv.8.xml:227(title) pwck.8.xml:252(title) passwd.1.xml:390(title) newusers.8.xml:362(title) newgrp.1.xml:109(title) login.1.xml:294(title) grpck.8.xml:209(title) groupmod.8.xml:193(title) groupmems.8.xml:199(title) groupdel.8.xml:128(title) groupadd.8.xml:219(title) gpasswd.1.xml:264(title) chsh.1.xml:154(title) chpasswd.8.xml:239(title) chgpasswd.8.xml:198(title) chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
msgid "CONFIGURATION"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:498(para) userdel.8.xml:172(para) useradd.8.xml:648(para) su.1.xml:340(para) sg.1.xml:99(para) pwck.8.xml:253(para) passwd.1.xml:391(para) newusers.8.xml:363(para) newgrp.1.xml:110(para) login.1.xml:295(para) grpck.8.xml:210(para) groupmod.8.xml:194(para) groupmems.8.xml:200(para) groupdel.8.xml:129(para) groupadd.8.xml:220(para) gpasswd.1.xml:265(para) chsh.1.xml:155(para) chpasswd.8.xml:240(para) chgpasswd.8.xml:199(para) chfn.1.xml:194(para) chage.1.xml:245(para)
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:497(para) userdel.8.xml:172(para) useradd.8.xml:648(para) su.1.xml:340(para) sg.1.xml:99(para) pwck.8.xml:253(para) passwd.1.xml:391(para) newusers.8.xml:363(para) newgrp.1.xml:110(para) login.1.xml:295(para) grpck.8.xml:210(para) groupmod.8.xml:194(para) groupmems.8.xml:200(para) groupdel.8.xml:129(para) groupadd.8.xml:220(para) gpasswd.1.xml:265(para) chsh.1.xml:155(para) chpasswd.8.xml:240(para) chgpasswd.8.xml:199(para) chfn.1.xml:194(para) chage.1.xml:245(para)
|
||||
msgid "The following configuration variables in <filename>/etc/login.defs</filename> change the behavior of this tool:"
|
||||
msgstr ""
|
||||
|
||||
@@ -189,43 +189,43 @@ msgstr ""
|
||||
msgid "Editor to be used if <option>VISUAL</option> is not set."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:514(title) userdel.8.xml:188(title) useradd.8.xml:675(title) suauth.5.xml:193(title) su.1.xml:367(title) sg.1.xml:110(title) shadow.5.xml:255(title) shadow.3.xml:226(title) pwconv.8.xml:250(title) pwck.8.xml:269(title) porttime.5.xml:130(title) passwd.5.xml:141(title) passwd.1.xml:408(title) newusers.8.xml:397(title) newgrp.1.xml:121(title) logoutd.8.xml:89(title) login.access.5.xml:121(title) login.1.xml:338(title) limits.5.xml:196(title) lastlog.8.xml:182(title) gshadow.5.xml:156(title) grpck.8.xml:221(title) groups.1.xml:100(title) groupmod.8.xml:205(title) groupmems.8.xml:211(title) groupdel.8.xml:140(title) groupadd.8.xml:233(title) gpasswd.1.xml:279(title) faillog.8.xml:243(title) faillog.5.xml:96(title) expiry.1.xml:121(title) chsh.1.xml:167(title) chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title) chfn.1.xml:207(title) chage.1.xml:256(title)
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:513(title) userdel.8.xml:188(title) useradd.8.xml:675(title) suauth.5.xml:193(title) su.1.xml:367(title) sg.1.xml:110(title) shadow.5.xml:255(title) shadow.3.xml:226(title) pwconv.8.xml:250(title) pwck.8.xml:269(title) porttime.5.xml:130(title) passwd.5.xml:141(title) passwd.1.xml:408(title) newusers.8.xml:397(title) newgrp.1.xml:121(title) logoutd.8.xml:89(title) login.access.5.xml:121(title) login.1.xml:338(title) limits.5.xml:196(title) lastlog.8.xml:204(title) gshadow.5.xml:156(title) grpck.8.xml:221(title) groups.1.xml:100(title) groupmod.8.xml:205(title) groupmems.8.xml:211(title) groupdel.8.xml:140(title) groupadd.8.xml:233(title) gpasswd.1.xml:279(title) faillog.8.xml:243(title) faillog.5.xml:96(title) expiry.1.xml:121(title) chsh.1.xml:167(title) chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title) chfn.1.xml:207(title) chage.1.xml:256(title)
|
||||
msgid "FILES"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:517(filename) userdel.8.xml:191(filename) useradd.8.xml:690(filename) sg.1.xml:125(filename) pwck.8.xml:272(filename) newusers.8.xml:412(filename) newgrp.1.xml:136(filename) gshadow.5.xml:159(filename) grpck.8.xml:224(filename) groups.1.xml:103(filename) groupmod.8.xml:208(filename) groupmems.8.xml:214(filename) groupdel.8.xml:143(filename) groupadd.8.xml:236(filename) gpasswd.1.xml:72(filename) gpasswd.1.xml:75(filename) gpasswd.1.xml:282(filename) chgpasswd.8.xml:216(filename)
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:516(filename) userdel.8.xml:191(filename) useradd.8.xml:690(filename) sg.1.xml:125(filename) pwck.8.xml:272(filename) newusers.8.xml:412(filename) newgrp.1.xml:136(filename) gshadow.5.xml:159(filename) grpck.8.xml:224(filename) groups.1.xml:103(filename) groupmod.8.xml:208(filename) groupmems.8.xml:214(filename) groupdel.8.xml:143(filename) groupadd.8.xml:236(filename) gpasswd.1.xml:72(filename) gpasswd.1.xml:75(filename) gpasswd.1.xml:282(filename) chgpasswd.8.xml:216(filename)
|
||||
msgid "/etc/group"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:519(para) userdel.8.xml:193(para) useradd.8.xml:692(para) sg.1.xml:127(para) pwck.8.xml:274(para) newusers.8.xml:414(para) newgrp.1.xml:138(para) gshadow.5.xml:161(para) grpck.8.xml:226(para) groups.1.xml:105(para) groupmod.8.xml:210(para) groupmems.8.xml:216(para) groupdel.8.xml:145(para) groupadd.8.xml:238(para) gpasswd.1.xml:284(para) chgpasswd.8.xml:218(para)
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:518(para) userdel.8.xml:193(para) useradd.8.xml:692(para) sg.1.xml:127(para) pwck.8.xml:274(para) newusers.8.xml:414(para) newgrp.1.xml:138(para) gshadow.5.xml:161(para) grpck.8.xml:226(para) groups.1.xml:105(para) groupmod.8.xml:210(para) groupmems.8.xml:216(para) groupdel.8.xml:145(para) groupadd.8.xml:238(para) gpasswd.1.xml:284(para) chgpasswd.8.xml:218(para)
|
||||
msgid "Group account information."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:523(filename) useradd.8.xml:696(filename) sg.1.xml:131(filename) newusers.8.xml:418(filename) newgrp.1.xml:142(filename) gshadow.5.xml:165(filename) grpck.8.xml:230(filename) groupmod.8.xml:214(filename) groupmems.8.xml:220(filename) groupdel.8.xml:149(filename) groupadd.8.xml:242(filename) gpasswd.1.xml:76(filename) gpasswd.1.xml:288(filename) chgpasswd.8.xml:222(filename)
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:522(filename) useradd.8.xml:696(filename) sg.1.xml:131(filename) newusers.8.xml:418(filename) newgrp.1.xml:142(filename) gshadow.5.xml:165(filename) grpck.8.xml:230(filename) groupmod.8.xml:214(filename) groupmems.8.xml:220(filename) groupdel.8.xml:149(filename) groupadd.8.xml:242(filename) gpasswd.1.xml:76(filename) gpasswd.1.xml:288(filename) chgpasswd.8.xml:222(filename)
|
||||
msgid "/etc/gshadow"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:525(para) useradd.8.xml:698(para) sg.1.xml:133(para) newusers.8.xml:420(para) newgrp.1.xml:144(para) gshadow.5.xml:167(para) grpck.8.xml:232(para) groupmod.8.xml:216(para) groupdel.8.xml:151(para) groupadd.8.xml:244(para) gpasswd.1.xml:290(para) chgpasswd.8.xml:224(para)
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:524(para) useradd.8.xml:698(para) sg.1.xml:133(para) newusers.8.xml:420(para) newgrp.1.xml:144(para) gshadow.5.xml:167(para) grpck.8.xml:232(para) groupmod.8.xml:216(para) groupdel.8.xml:151(para) groupadd.8.xml:244(para) gpasswd.1.xml:290(para) chgpasswd.8.xml:224(para)
|
||||
msgid "Secure group account information."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:535(filename) userdel.8.xml:203(filename) useradd.8.xml:678(filename) su.1.xml:370(filename) sg.1.xml:113(filename) shadow.5.xml:258(filename) pwck.8.xml:278(filename) passwd.5.xml:144(filename) passwd.1.xml:411(filename) newusers.8.xml:400(filename) newgrp.1.xml:124(filename) login.1.xml:353(filename) grpck.8.xml:236(filename) groupmod.8.xml:226(filename) expiry.1.xml:124(filename) chsh.1.xml:170(filename) chpasswd.8.xml:258(filename) chfn.1.xml:216(filename) chage.1.xml:260(filename)
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:534(filename) userdel.8.xml:203(filename) useradd.8.xml:678(filename) su.1.xml:370(filename) sg.1.xml:113(filename) shadow.5.xml:258(filename) pwck.8.xml:278(filename) passwd.5.xml:144(filename) passwd.1.xml:411(filename) newusers.8.xml:400(filename) newgrp.1.xml:124(filename) login.1.xml:353(filename) grpck.8.xml:236(filename) groupmod.8.xml:226(filename) expiry.1.xml:124(filename) chsh.1.xml:170(filename) chpasswd.8.xml:258(filename) chfn.1.xml:216(filename) chage.1.xml:260(filename)
|
||||
msgid "/etc/passwd"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:537(para) userdel.8.xml:205(para) useradd.8.xml:680(para) su.1.xml:372(para) sg.1.xml:115(para) shadow.5.xml:260(para) pwck.8.xml:280(para) passwd.5.xml:146(para) passwd.1.xml:413(para) newusers.8.xml:402(para) newgrp.1.xml:126(para) login.1.xml:355(para) grpck.8.xml:238(para) groupmod.8.xml:228(para) expiry.1.xml:126(para) chsh.1.xml:172(para) chpasswd.8.xml:260(para) chfn.1.xml:218(para) chage.1.xml:263(para)
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:536(para) userdel.8.xml:205(para) useradd.8.xml:680(para) su.1.xml:372(para) sg.1.xml:115(para) shadow.5.xml:260(para) pwck.8.xml:280(para) passwd.5.xml:146(para) passwd.1.xml:413(para) newusers.8.xml:402(para) newgrp.1.xml:126(para) login.1.xml:355(para) grpck.8.xml:238(para) groupmod.8.xml:228(para) expiry.1.xml:126(para) chsh.1.xml:172(para) chpasswd.8.xml:260(para) chfn.1.xml:218(para) chage.1.xml:263(para)
|
||||
msgid "User account information."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:541(filename) userdel.8.xml:209(filename) useradd.8.xml:684(filename) su.1.xml:376(filename) sg.1.xml:119(filename) shadow.5.xml:264(filename) shadow.3.xml:229(filename) pwck.8.xml:284(filename) passwd.5.xml:150(filename) passwd.1.xml:417(filename) newusers.8.xml:406(filename) newgrp.1.xml:130(filename) login.1.xml:359(filename) expiry.1.xml:130(filename) chpasswd.8.xml:264(filename) chage.1.xml:268(filename)
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:540(filename) userdel.8.xml:209(filename) useradd.8.xml:684(filename) su.1.xml:376(filename) sg.1.xml:119(filename) shadow.5.xml:264(filename) shadow.3.xml:229(filename) pwck.8.xml:284(filename) passwd.5.xml:150(filename) passwd.1.xml:417(filename) newusers.8.xml:406(filename) newgrp.1.xml:130(filename) login.1.xml:359(filename) expiry.1.xml:130(filename) chpasswd.8.xml:264(filename) chage.1.xml:268(filename)
|
||||
msgid "/etc/shadow"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:543(para) userdel.8.xml:211(para) useradd.8.xml:686(para) su.1.xml:378(para) sg.1.xml:121(para) shadow.5.xml:266(para) shadow.3.xml:231(para) pwck.8.xml:286(para) passwd.1.xml:419(para) newusers.8.xml:408(para) newgrp.1.xml:132(para) login.1.xml:361(para) expiry.1.xml:132(para) chpasswd.8.xml:266(para) chage.1.xml:271(para)
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:542(para) userdel.8.xml:211(para) useradd.8.xml:686(para) su.1.xml:378(para) sg.1.xml:121(para) shadow.5.xml:266(para) shadow.3.xml:231(para) pwck.8.xml:286(para) passwd.1.xml:419(para) newusers.8.xml:408(para) newgrp.1.xml:132(para) login.1.xml:361(para) expiry.1.xml:132(para) chpasswd.8.xml:266(para) chage.1.xml:271(para)
|
||||
msgid "Secure user account information."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:562(title) userdel.8.xml:308(title) useradd.8.xml:804(title) suauth.5.xml:222(title) su.1.xml:438(title) sg.1.xml:140(title) shadow.5.xml:283(title) shadow.3.xml:238(title) pwconv.8.xml:262(title) pwck.8.xml:344(title) porttime.5.xml:142(title) passwd.5.xml:169(title) passwd.1.xml:489(title) nologin.8.xml:78(title) newusers.8.xml:451(title) newgrp.1.xml:151(title) login.defs.5.xml:534(title) login.access.5.xml:133(title) login.1.xml:398(title) limits.5.xml:206(title) gshadow.5.xml:174(title) grpck.8.xml:290(title) groups.1.xml:112(title) groupmod.8.xml:286(title) groupmems.8.xml:229(title) groupdel.8.xml:197(title) groupadd.8.xml:324(title) gpasswd.1.xml:297(title) faillog.8.xml:255(title) faillog.5.xml:108(title) expiry.1.xml:139(title) chsh.1.xml:191(title) chpasswd.8.xml:285(title) chgpasswd.8.xml:237(title) chfn.1.xml:225(title) chage.1.xml:311(title)
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:561(title) userdel.8.xml:308(title) useradd.8.xml:804(title) suauth.5.xml:222(title) su.1.xml:438(title) sg.1.xml:140(title) shadow.5.xml:283(title) shadow.3.xml:238(title) pwconv.8.xml:262(title) pwck.8.xml:344(title) porttime.5.xml:142(title) passwd.5.xml:169(title) passwd.1.xml:489(title) nologin.8.xml:78(title) newusers.8.xml:451(title) newgrp.1.xml:151(title) login.defs.5.xml:534(title) login.access.5.xml:133(title) login.1.xml:398(title) limits.5.xml:206(title) gshadow.5.xml:174(title) grpck.8.xml:290(title) groups.1.xml:112(title) groupmod.8.xml:286(title) groupmems.8.xml:229(title) groupdel.8.xml:197(title) groupadd.8.xml:324(title) gpasswd.1.xml:297(title) faillog.8.xml:255(title) faillog.5.xml:108(title) expiry.1.xml:139(title) chsh.1.xml:191(title) chpasswd.8.xml:285(title) chgpasswd.8.xml:237(title) chfn.1.xml:225(title) chage.1.xml:311(title)
|
||||
msgid "SEE ALSO"
|
||||
msgstr ""
|
||||
|
||||
@@ -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)
|
||||
@@ -521,19 +521,19 @@ msgstr ""
|
||||
msgid "A blank <replaceable>SEUSER</replaceable> will remove the SELinux user mapping for user <replaceable>LOGIN</replaceable> (if any)."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:478(title) userdel.8.xml:281(title) useradd.8.xml:623(title) su.1.xml:331(title) shadow.3.xml:218(title) passwd.1.xml:372(title) newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:194(title) groupdel.8.xml:116(title) groupadd.8.xml:257(title) gpasswd.1.xml:252(title) faillog.8.xml:232(title) chpasswd.8.xml:231(title) chgpasswd.8.xml:186(title)
|
||||
#: usermod.8.xml:478(title) userdel.8.xml:281(title) useradd.8.xml:623(title) su.1.xml:331(title) shadow.3.xml:218(title) passwd.1.xml:372(title) newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:216(title) groupdel.8.xml:116(title) groupadd.8.xml:257(title) gpasswd.1.xml:252(title) faillog.8.xml:232(title) chpasswd.8.xml:231(title) chgpasswd.8.xml:186(title)
|
||||
msgid "CAVEATS"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:479(para)
|
||||
msgid "You must make certain that the named user is not executing any processes when this command is being executed if the user's numerical user ID, the user's name, or the user's home directory is being changed. <command>usermod</command> checks this on Linux, but only check if the user is logged in according to utmp on other architectures."
|
||||
msgid "You must make certain that the named user is not executing any processes when this command is being executed if the user's numerical user ID, the user's name, or the user's home directory is being changed. <command>usermod</command> checks this on Linux. On other platforms it only uses utmp to check if the user is logged in."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:487(para)
|
||||
#: usermod.8.xml:486(para)
|
||||
msgid "You must change the owner of any <command>crontab</command> files or <command>at</command> jobs manually."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:491(para)
|
||||
#: usermod.8.xml:490(para)
|
||||
msgid "You must make any changes involving NIS on the NIS server."
|
||||
msgstr ""
|
||||
|
||||
@@ -641,31 +641,31 @@ msgstr ""
|
||||
msgid "If <replaceable>yes</replaceable>, the location of the user tcb directory to be created will not be automatically set to /etc/tcb/user, but will be computed depending on the UID of the user, according to the following algorithm: <placeholder-1/>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:529(filename) userdel.8.xml:197(filename) useradd.8.xml:726(filename) su.1.xml:382(filename) pwconv.8.xml:253(filename) passwd.1.xml:423(filename) newusers.8.xml:424(filename) login.access.5.xml:124(filename) login.1.xml:389(filename) groupmod.8.xml:220(filename) groupadd.8.xml:248(filename) chsh.1.xml:182(filename) chpasswd.8.xml:270(filename) chgpasswd.8.xml:228(filename) chfn.1.xml:210(filename)
|
||||
#: usermod.8.xml:528(filename) userdel.8.xml:197(filename) useradd.8.xml:726(filename) su.1.xml:382(filename) pwconv.8.xml:253(filename) passwd.1.xml:423(filename) newusers.8.xml:424(filename) login.access.5.xml:124(filename) login.1.xml:389(filename) groupmod.8.xml:220(filename) groupadd.8.xml:248(filename) chsh.1.xml:182(filename) chpasswd.8.xml:270(filename) chgpasswd.8.xml:228(filename) chfn.1.xml:210(filename)
|
||||
msgid "/etc/login.defs"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:531(para) userdel.8.xml:199(para) useradd.8.xml:728(para) su.1.xml:384(para) pwconv.8.xml:255(para) passwd.1.xml:425(para) newusers.8.xml:426(para) login.access.5.xml:126(para) login.1.xml:391(para) groupmod.8.xml:222(para) groupadd.8.xml:250(para) chsh.1.xml:184(para) chpasswd.8.xml:272(para) chgpasswd.8.xml:230(para) chfn.1.xml:212(para)
|
||||
#: usermod.8.xml:530(para) userdel.8.xml:199(para) useradd.8.xml:728(para) su.1.xml:384(para) pwconv.8.xml:255(para) passwd.1.xml:425(para) newusers.8.xml:426(para) login.access.5.xml:126(para) login.1.xml:391(para) groupmod.8.xml:222(para) groupadd.8.xml:250(para) chsh.1.xml:184(para) chpasswd.8.xml:272(para) chgpasswd.8.xml:230(para) chfn.1.xml:212(para)
|
||||
msgid "Shadow password suite configuration."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:547(filename) userdel.8.xml:215(filename) useradd.8.xml:714(filename) newusers.8.xml:436(filename)
|
||||
#: usermod.8.xml:546(filename) userdel.8.xml:215(filename) useradd.8.xml:714(filename) newusers.8.xml:436(filename)
|
||||
msgid "/etc/subgid"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:549(para) userdel.8.xml:217(para) useradd.8.xml:716(para) newusers.8.xml:438(para)
|
||||
#: usermod.8.xml:548(para) userdel.8.xml:217(para) useradd.8.xml:716(para) newusers.8.xml:438(para)
|
||||
msgid "Per user subordinate group IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:553(filename) userdel.8.xml:221(filename) useradd.8.xml:720(filename) newusers.8.xml:442(filename)
|
||||
#: usermod.8.xml:552(filename) userdel.8.xml:221(filename) useradd.8.xml:720(filename) newusers.8.xml:442(filename)
|
||||
msgid "/etc/subuid"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:555(para) userdel.8.xml:223(para) useradd.8.xml:722(para) newusers.8.xml:444(para)
|
||||
#: usermod.8.xml:554(para) userdel.8.xml:223(para) useradd.8.xml:722(para) newusers.8.xml:444(para)
|
||||
msgid "Per user subordinate user IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:563(para)
|
||||
#: usermod.8.xml:562(para)
|
||||
msgid "<citerefentry><refentrytitle>chfn</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>chsh</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry><refentrytitle>crypt</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>gpasswd</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>groupadd</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>groupdel</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>groupmod</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>login.defs</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <phrase condition=\"subids\"><citerefentry><refentrytitle>subgid</refentrytitle><manvolnum>5</manvolnum></citerefentry>, <citerefentry><refentrytitle>subuid</refentrytitle><manvolnum>5</manvolnum></citerefentry>, </phrase><citerefentry><refentrytitle>useradd</refentrytitle><manvolnum>8</manvolnum></citerefentry>, <citerefentry><refentrytitle>userdel</refentrytitle><manvolnum>8</manvolnum></citerefentry>."
|
||||
msgstr ""
|
||||
|
||||
@@ -935,7 +935,7 @@ msgid "<option>-K</option>, <option>--key</option> <replaceable>KEY</replac
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:301(para)
|
||||
msgid "Overrides <filename>/etc/login.defs</filename> defaults (<option>UID_MIN</option>, <option>UID_MAX</option>, <option>UMASK</option>, <option>PASS_MAX_DAYS</option> and others). <placeholder-1/> Example: <option>-K</option> <replaceable>PASS_MAX_DAYS</replaceable>=<replaceable>-1</replaceable> can be used when creating system account to turn off password ageing, even though system account has no password at all. Multiple <option>-K</option> options can be specified, e.g.: <option>-K</option> <replaceable>UID_MIN</replaceable>=<replaceable>100</replaceable> <option>-K</option> <replaceable>UID_MAX</replaceable>=<replaceable>499</replaceable>"
|
||||
msgid "Overrides <filename>/etc/login.defs</filename> defaults (<option>UID_MIN</option>, <option>UID_MAX</option>, <option>UMASK</option>, <option>PASS_MAX_DAYS</option> and others). <placeholder-1/> Example: <option>-K</option> <replaceable>PASS_MAX_DAYS</replaceable>=<replaceable>-1</replaceable> can be used when creating system account to turn off password aging, even though system account has no password at all. Multiple <option>-K</option> options can be specified, e.g.: <option>-K</option> <replaceable>UID_MIN</replaceable>=<replaceable>100</replaceable> <option>-K</option> <replaceable>UID_MAX</replaceable>=<replaceable>499</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:322(term)
|
||||
@@ -947,7 +947,7 @@ msgid "Do not add the user to the lastlog and faillog databases."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:327(para)
|
||||
msgid "By default, the user's entries in the lastlog and faillog databases are resetted to avoid reusing the entry from a previously deleted user."
|
||||
msgid "By default, the user's entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:335(term)
|
||||
@@ -962,8 +962,8 @@ msgstr ""
|
||||
msgid "By default, if this option is not specified and <option>CREATE_HOME</option> is not enabled, no home directories are created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:354(option)
|
||||
msgid "-M"
|
||||
#: useradd.8.xml:353(term)
|
||||
msgid "<option>-M</option>, <option>--no-create-home</option>"
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:357(para)
|
||||
@@ -1007,7 +1007,7 @@ msgid "System users will be created with no aging information in <filename>/etc/
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:434(para)
|
||||
msgid "Note that <command>useradd</command> will not create a home directory for such an user, regardless of the default setting in <filename>/etc/login.defs</filename> (<option>CREATE_HOME</option>). You have to specify the <option>-m</option> options if you want a home directory for a system account to be created."
|
||||
msgid "Note that <command>useradd</command> will not create a home directory for such a user, regardless of the default setting in <filename>/etc/login.defs</filename> (<option>CREATE_HOME</option>). You have to specify the <option>-m</option> options if you want a home directory for a system account to be created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:461(para)
|
||||
@@ -1329,7 +1329,7 @@ msgstr ""
|
||||
#. .RS
|
||||
#: suauth.5.xml:83(literallayout)
|
||||
#, no-wrap
|
||||
msgid "\n 1) the user su is targetting\n "
|
||||
msgid "\n 1) the user su is targeting\n "
|
||||
msgstr ""
|
||||
|
||||
#. .fi
|
||||
@@ -1351,7 +1351,7 @@ msgid "Where to-id is either the word <emphasis>ALL</emphasis>, a list of userna
|
||||
msgstr ""
|
||||
|
||||
#: suauth.5.xml:107(para)
|
||||
msgid "from-id is formatted the same as to-id except the extra word <emphasis>GROUP</emphasis> is recognised. <emphasis>ALL EXCEPT GROUP</emphasis> is perfectly valid too. Following <emphasis>GROUP</emphasis> appears one or more group names, delimited by \",\". It is not sufficient to have primary group id of the relevant group, an entry in <citerefentry><refentrytitle>/etc/group</refentrytitle><manvolnum>5</manvolnum></citerefentry> is neccessary."
|
||||
msgid "from-id is formatted the same as to-id except the extra word <emphasis>GROUP</emphasis> is recognized. <emphasis>ALL EXCEPT GROUP</emphasis> is perfectly valid too. Following <emphasis>GROUP</emphasis> appears one or more group names, delimited by \",\". It is not sufficient to have primary group id of the relevant group, an entry in <citerefentry><refentrytitle>/etc/group</refentrytitle><manvolnum>5</manvolnum></citerefentry> is necessary."
|
||||
msgstr ""
|
||||
|
||||
#: suauth.5.xml:118(para)
|
||||
@@ -1472,7 +1472,7 @@ msgid "Specify a command that will be invoked by the shell using its <option>-c<
|
||||
msgstr ""
|
||||
|
||||
#: su.1.xml:158(para)
|
||||
msgid "The executed command will have no controlling terminal. This option cannot be used to execute interractive programs which need a controlling TTY."
|
||||
msgid "The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY."
|
||||
msgstr ""
|
||||
|
||||
#: su.1.xml:168(term)
|
||||
@@ -1854,7 +1854,7 @@ msgid "This field may be empty, in which case no passwords are required to authe
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:117(para) gshadow.5.xml:107(para)
|
||||
msgid "A password field which starts with a exclamation mark means that the password is locked. The remaining characters on the line represent the password field before the password was locked."
|
||||
msgid "A password field which starts with an exclamation mark means that the password is locked. The remaining characters on the line represent the password field before the password was locked."
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:127(emphasis)
|
||||
@@ -1866,7 +1866,7 @@ msgid "The date of the last password change, expressed as the number of days sin
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:134(para)
|
||||
msgid "The value 0 has a special meaning, which is that the user should change her pasword the next time she will log in the system."
|
||||
msgid "The value 0 has a special meaning, which is that the user should change her password the next time she will log in the system."
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:139(para)
|
||||
@@ -1942,7 +1942,7 @@ msgid "The date of expiration of the account, expressed as the number of days si
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:229(para)
|
||||
msgid "Note that an account expiration differs from a password expiration. In case of an acount expiration, the user shall not be allowed to login. In case of a password expiration, the user is not allowed to login using her password."
|
||||
msgid "Note that an account expiration differs from a password expiration. In case of an account expiration, the user shall not be allowed to login. In case of a password expiration, the user is not allowed to login using her password."
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:235(para)
|
||||
@@ -2331,7 +2331,7 @@ msgid "By default, <command>pwck</command> operates on the files <filename>/etc/
|
||||
msgstr ""
|
||||
|
||||
#: pwck.8.xml:243(para)
|
||||
msgid "Note that when <option>USE_TCB</option> is enabled, you cannot specify an alternative <replaceable>shadow</replaceable> file. In future releases, this paramater could be replaced by an alternate TCB directory."
|
||||
msgid "Note that when <option>USE_TCB</option> is enabled, you cannot specify an alternative <replaceable>shadow</replaceable> file. In future releases, this parameter could be replaced by an alternate TCB directory."
|
||||
msgstr ""
|
||||
|
||||
#: pwck.8.xml:312(para)
|
||||
@@ -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)
|
||||
@@ -2544,7 +2544,7 @@ msgid "Compromises in password security normally result from careless password s
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:166(para)
|
||||
msgid "You can find advices on how to choose a strong password on http://en.wikipedia.org/wiki/Password_strength"
|
||||
msgid "You can find advice on how to choose a strong password on http://en.wikipedia.org/wiki/Password_strength"
|
||||
msgstr ""
|
||||
|
||||
#: passwd.1.xml:175(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)
|
||||
@@ -2832,7 +2832,7 @@ msgid "HISTORY"
|
||||
msgstr ""
|
||||
|
||||
#: nologin.8.xml:91(para)
|
||||
msgid "The <command>nologin</command> command appearred in BSD 4.4."
|
||||
msgid "The <command>nologin</command> command appeared in BSD 4.4."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:72(refentrytitle) newusers.8.xml:79(refname) newusers.8.xml:85(command) login.defs.5.xml:391(term)
|
||||
@@ -2864,7 +2864,7 @@ msgid "This is the name of the user."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:116(para)
|
||||
msgid "It can be the name of a new user or the name of an existing user (or an user created before by <command>newusers</command>). In case of an existing user, the user's information will be changed, otherwise a new user will be created."
|
||||
msgid "It can be the name of a new user or the name of an existing user (or a user created before by <command>newusers</command>). In case of an existing user, the user's information will be changed, otherwise a new user will be created."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:127(emphasis)
|
||||
@@ -2884,7 +2884,7 @@ msgid "This field is used to define the UID of the user."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:144(para)
|
||||
msgid "If the field is empty, an new (unused) UID will be defined automatically by <command>newusers</command>."
|
||||
msgid "If the field is empty, a new (unused) UID will be defined automatically by <command>newusers</command>."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:148(para)
|
||||
@@ -2892,7 +2892,7 @@ msgid "If this field contains a number, this number will be used as the UID."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:152(para)
|
||||
msgid "If this field contains the name of an existing user (or the name of an user created before by <command>newusers</command>), the UID of the specified user will be used."
|
||||
msgid "If this field contains the name of an existing user (or the name of a user created before by <command>newusers</command>), the UID of the specified user will be used."
|
||||
msgstr ""
|
||||
|
||||
#: newusers.8.xml:158(para)
|
||||
@@ -3704,7 +3704,7 @@ msgid "D: max data size (KB)"
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:111(para)
|
||||
msgid "F: maximum filesize (KB)"
|
||||
msgid "F: maximum file size (KB)"
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:112(para)
|
||||
@@ -3761,7 +3761,7 @@ msgid "\n username L2D2048N5\n username L2 D2048 N5\n "
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:145(para)
|
||||
msgid "Be aware that after <emphasis remap=\"I\">username</emphasis> the rest of the line is considered a limit string, thus comments are not allowed. A invalid limits string will be rejected (not considered) by the <command>login</command> program."
|
||||
msgid "Be aware that after <emphasis remap=\"I\">username</emphasis> the rest of the line is considered a limit string, thus comments are not allowed. An invalid limits string will be rejected (not considered) by the <command>login</command> program."
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:152(para)
|
||||
@@ -3773,11 +3773,11 @@ msgid "The limits specified in the form \"<replaceable>@group</replaceable>\" ap
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:165(para)
|
||||
msgid "If more than one line with limits for an user exist, only the first line for this user will be considered."
|
||||
msgid "If more than one line with limits for a user exist, only the first line for this user will be considered."
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:170(para)
|
||||
msgid "If no lines are specified for an user, the last <replaceable>@group</replaceable> line matching a group whose the user is a member of will be considered, or the last line with default limits if no groups contain the user."
|
||||
msgid "If no lines are specified for a user, the last <replaceable>@group</replaceable> line matching a group whose the user is a member of will be considered, or the last line with default limits if no groups contain the user."
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:177(para)
|
||||
@@ -3824,51 +3824,67 @@ msgstr ""
|
||||
msgid "Print only lastlog records older than <emphasis remap=\"I\">DAYS</emphasis>."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:127(term) faillog.8.xml:192(term)
|
||||
msgid "<option>-t</option>, <option>--time</option> <replaceable>DAYS</replaceable>"
|
||||
#: lastlog.8.xml:107(term)
|
||||
msgid "<option>-C</option>, <option>--clear</option>"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:131(para)
|
||||
msgid "Print the lastlog records more recent than <emphasis remap=\"I\">DAYS</emphasis>."
|
||||
#: lastlog.8.xml:111(para)
|
||||
msgid "Clear lastlog record of a user. This option can be used only together with <option>-u</option> (<option>--user</option>))."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:138(term) faillog.8.xml:202(term)
|
||||
msgid "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</replaceable>|<replaceable>RANGE</replaceable>"
|
||||
#: lastlog.8.xml:138(term)
|
||||
msgid "<option>-S</option>, <option>--set</option>"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
msgid "Set lastlog record of a user to the current time. This option can be used only together with <option>-u</option> (<option>--user</option>))."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:149(term) faillog.8.xml:192(term)
|
||||
msgid "<option>-t</option>, <option>--time</option> <replaceable>DAYS</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:153(para)
|
||||
msgid "Print the lastlog records more recent than <emphasis remap=\"I\">DAYS</emphasis>."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:160(term) faillog.8.xml:202(term)
|
||||
msgid "<option>-u</option>, <option>--user</option> <replaceable>LOGIN</replaceable>|<replaceable>RANGE</replaceable>"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:164(para)
|
||||
msgid "Print the lastlog record of the specified user(s)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:145(para) faillog.8.xml:211(para)
|
||||
#: lastlog.8.xml:167(para) faillog.8.xml:211(para)
|
||||
msgid "The users can be specified by a login name, a numerical user ID, or a <replaceable>RANGE</replaceable> of users. This <replaceable>RANGE</replaceable> of users can be specified with a min and max values (<replaceable>UID_MIN-UID_MAX</replaceable>), a max value (<replaceable>-UID_MAX</replaceable>), or a min value (<replaceable>UID_MIN-</replaceable>)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:157(para)
|
||||
#: lastlog.8.xml:179(para)
|
||||
msgid "If the user has never logged in the message <emphasis>** Never logged in**</emphasis> will be displayed instead of the port and time."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:162(para)
|
||||
#: lastlog.8.xml:184(para)
|
||||
msgid "Only the entries for the current users of the system will be displayed. Other entries may exist for users that were deleted previously."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:170(title) groups.1.xml:90(title) chsh.1.xml:140(title) chage.1.xml:231(title)
|
||||
#: lastlog.8.xml:192(title) groups.1.xml:90(title) chsh.1.xml:140(title) chage.1.xml:231(title)
|
||||
msgid "NOTE"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:171(para)
|
||||
#: lastlog.8.xml:193(para)
|
||||
msgid "The <filename>lastlog</filename> file is a database which contains info on the last login of each user. You should not rotate it. It is a sparse file, so its size on the disk is usually much smaller than the one shown by \"<command>ls -l</command>\" (which can indicate a really big file if you have in <filename>passwd</filename> users with a high UID). You can display its real size with \"<command>ls -s</command>\"."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:185(filename)
|
||||
#: lastlog.8.xml:207(filename)
|
||||
msgid "/var/log/lastlog"
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:187(para)
|
||||
#: lastlog.8.xml:209(para)
|
||||
msgid "Database times of previous user logins."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:195(para)
|
||||
#: lastlog.8.xml:217(para)
|
||||
msgid "Large gaps in UID numbers will cause the lastlog program to run longer with no output to the screen (i.e. if in lastlog database there is no entries for users with UID between 170 and 800 lastlog will appear to hang as it processes entries with UIDs 171-799)."
|
||||
msgstr ""
|
||||
|
||||
@@ -3905,7 +3921,7 @@ msgid "If the password field contains some string that is not a valid result of
|
||||
msgstr ""
|
||||
|
||||
#: gshadow.5.xml:97(para)
|
||||
msgid "The password is used when an user who is not a member of the group wants to gain the permissions of this group (see <citerefentry><refentrytitle>newgrp</refentrytitle><manvolnum>1</manvolnum></citerefentry>)."
|
||||
msgid "The password is used when a user who is not a member of the group wants to gain the permissions of this group (see <citerefentry><refentrytitle>newgrp</refentrytitle><manvolnum>1</manvolnum></citerefentry>)."
|
||||
msgstr ""
|
||||
|
||||
#: gshadow.5.xml:103(para)
|
||||
@@ -4153,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)
|
||||
@@ -4169,7 +4185,7 @@ msgid "<option>-a</option>, <option>--add</option> <replaceable>user_name</
|
||||
msgstr ""
|
||||
|
||||
#: groupmems.8.xml:109(para)
|
||||
msgid "Add an user to the group membership list."
|
||||
msgid "Add a user to the group membership list."
|
||||
msgstr ""
|
||||
|
||||
#: groupmems.8.xml:110(para) groupmems.8.xml:126(para) groupmems.8.xml:157(para)
|
||||
@@ -4663,7 +4679,7 @@ msgid "By default the passwords must be supplied in clear-text, and are encrypte
|
||||
msgstr ""
|
||||
|
||||
#: chpasswd.8.xml:97(para)
|
||||
msgid "The default encryption algorithm can be defined for the system with the <option>ENCRYPT_METHOD</option> or <option>MD5_CRYPT_ENAB</option> variables of <filename>/etc/login.defs</filename>, and can be overwitten with the <option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgid "The default encryption algorithm can be defined for the system with the <option>ENCRYPT_METHOD</option> or <option>MD5_CRYPT_ENAB</option> variables of <filename>/etc/login.defs</filename>, and can be overwritten with the <option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
#: chpasswd.8.xml:105(para)
|
||||
@@ -4671,7 +4687,7 @@ msgid "By default, passwords are encrypted by PAM, but (even if not recommended)
|
||||
msgstr ""
|
||||
|
||||
#: chpasswd.8.xml:111(para)
|
||||
msgid "<phrase condition=\"pam\">Except when PAM is used to encrypt the passwords,</phrase><command>chpasswd</command> first updates all the passwords in memory, and then commits all the changes to disk if no errors occured for any user."
|
||||
msgid "<phrase condition=\"pam\">Except when PAM is used to encrypt the passwords,</phrase><command>chpasswd</command> first updates all the passwords in memory, and then commits all the changes to disk if no errors occurred for any user."
|
||||
msgstr ""
|
||||
|
||||
#: chpasswd.8.xml:117(para)
|
||||
@@ -4763,7 +4779,7 @@ msgid "By default the supplied password must be in clear-text, and is encrypted
|
||||
msgstr ""
|
||||
|
||||
#: chgpasswd.8.xml:92(para)
|
||||
msgid "The default encryption algorithm can be defined for the system with the <option>ENCRYPT_METHOD</option> variable of <filename>/etc/login.defs</filename>, and can be overwiten with the <option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgid "The default encryption algorithm can be defined for the system with the <option>ENCRYPT_METHOD</option> variable of <filename>/etc/login.defs</filename>, and can be overwritten with the <option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
#: chgpasswd.8.xml:106(para)
|
||||
@@ -4847,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)
|
||||
@@ -4899,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)
|
||||
@@ -4911,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)
|
||||
@@ -4923,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)
|
||||
|
||||
396
man/po/sv.po
396
man/po/sv.po
@@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: man pages for shadow 4.0.18\n"
|
||||
"POT-Creation-Date: 2013-08-23 01:54+0200\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2013-08-23 01:41+0200\n"
|
||||
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
|
||||
"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
|
||||
@@ -49,16 +49,15 @@ msgstr ""
|
||||
#: useradd.8.xml:62(surname) suauth.5.xml:45(surname) su.1.xml:62(surname)
|
||||
#: sg.1.xml:46(surname) shadow.5.xml:45(surname) shadow.3.xml:45(surname)
|
||||
#: pwconv.8.xml:51(surname) pwck.8.xml:51(surname) porttime.5.xml:45(surname)
|
||||
#: passwd.5.xml:45(surname) passwd.1.xml:52(surname)
|
||||
#: newusers.8.xml:60(surname) newgrp.1.xml:46(surname)
|
||||
#: logoutd.8.xml:45(surname) login.defs.5.xml:110(surname)
|
||||
#: login.access.5.xml:46(surname) login.1.xml:78(surname)
|
||||
#: limits.5.xml:47(surname) lastlog.8.xml:46(surname) grpck.8.xml:46(surname)
|
||||
#: groups.1.xml:45(surname) groupmod.8.xml:46(surname)
|
||||
#: passwd.5.xml:45(surname) passwd.1.xml:52(surname) newusers.8.xml:60(surname)
|
||||
#: newgrp.1.xml:46(surname) logoutd.8.xml:45(surname)
|
||||
#: login.defs.5.xml:110(surname) login.access.5.xml:46(surname)
|
||||
#: login.1.xml:78(surname) limits.5.xml:47(surname) lastlog.8.xml:46(surname)
|
||||
#: grpck.8.xml:46(surname) groups.1.xml:45(surname) groupmod.8.xml:46(surname)
|
||||
#: groupmems.8.xml:49(surname) groupdel.8.xml:46(surname)
|
||||
#: groupadd.8.xml:48(surname) gpasswd.1.xml:50(surname)
|
||||
#: faillog.8.xml:45(surname) faillog.5.xml:45(surname)
|
||||
#: expiry.1.xml:49(surname) chsh.1.xml:48(surname) chpasswd.8.xml:49(surname)
|
||||
#: faillog.8.xml:45(surname) faillog.5.xml:45(surname) expiry.1.xml:49(surname)
|
||||
#: chsh.1.xml:48(surname) chpasswd.8.xml:49(surname)
|
||||
#: chgpasswd.8.xml:45(surname) chfn.1.xml:48(surname) chage.1.xml:46(surname)
|
||||
msgid "Kłoczko"
|
||||
msgstr ""
|
||||
@@ -83,17 +82,16 @@ msgstr ""
|
||||
#: useradd.8.xml:64(contrib) suauth.5.xml:47(contrib) su.1.xml:64(contrib)
|
||||
#: sg.1.xml:48(contrib) shadow.5.xml:47(contrib) shadow.3.xml:47(contrib)
|
||||
#: pwconv.8.xml:53(contrib) pwck.8.xml:53(contrib) porttime.5.xml:47(contrib)
|
||||
#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib)
|
||||
#: newusers.8.xml:62(contrib) newgrp.1.xml:48(contrib)
|
||||
#: logoutd.8.xml:47(contrib) login.defs.5.xml:112(contrib)
|
||||
#: login.access.5.xml:48(contrib) login.1.xml:80(contrib)
|
||||
#: limits.5.xml:49(contrib) lastlog.8.xml:48(contrib) grpck.8.xml:48(contrib)
|
||||
#: groups.1.xml:47(contrib) groupmod.8.xml:48(contrib)
|
||||
#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib) newusers.8.xml:62(contrib)
|
||||
#: newgrp.1.xml:48(contrib) logoutd.8.xml:47(contrib)
|
||||
#: login.defs.5.xml:112(contrib) login.access.5.xml:48(contrib)
|
||||
#: login.1.xml:80(contrib) limits.5.xml:49(contrib) lastlog.8.xml:48(contrib)
|
||||
#: grpck.8.xml:48(contrib) groups.1.xml:47(contrib) groupmod.8.xml:48(contrib)
|
||||
#: groupmems.8.xml:51(contrib) groupdel.8.xml:48(contrib)
|
||||
#: groupadd.8.xml:50(contrib) gpasswd.1.xml:52(contrib)
|
||||
#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib)
|
||||
#: expiry.1.xml:51(contrib) chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib)
|
||||
#: chfn.1.xml:50(contrib) chage.1.xml:48(contrib)
|
||||
#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib) expiry.1.xml:51(contrib)
|
||||
#: chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib) chfn.1.xml:50(contrib)
|
||||
#: chage.1.xml:48(contrib)
|
||||
msgid "shadow-utils maintainer, 2000 - 2007"
|
||||
msgstr ""
|
||||
|
||||
@@ -127,14 +125,13 @@ msgstr ""
|
||||
#: newusers.8.xml:66(surname) newgrp.1.xml:52(surname)
|
||||
#: logoutd.8.xml:51(surname) login.defs.5.xml:116(surname)
|
||||
#: login.access.5.xml:52(surname) login.1.xml:84(surname)
|
||||
#: limits.5.xml:53(surname) lastlog.8.xml:52(surname)
|
||||
#: gshadow.5.xml:39(surname) grpck.8.xml:52(surname) groups.1.xml:51(surname)
|
||||
#: groupmod.8.xml:52(surname) groupmems.8.xml:55(surname)
|
||||
#: groupdel.8.xml:52(surname) groupadd.8.xml:54(surname)
|
||||
#: gpasswd.1.xml:56(surname) faillog.8.xml:51(surname)
|
||||
#: faillog.5.xml:51(surname) expiry.1.xml:55(surname) chsh.1.xml:54(surname)
|
||||
#: chpasswd.8.xml:55(surname) chgpasswd.8.xml:51(surname)
|
||||
#: chfn.1.xml:54(surname) chage.1.xml:52(surname)
|
||||
#: limits.5.xml:53(surname) lastlog.8.xml:52(surname) gshadow.5.xml:39(surname)
|
||||
#: grpck.8.xml:52(surname) groups.1.xml:51(surname) groupmod.8.xml:52(surname)
|
||||
#: groupmems.8.xml:55(surname) groupdel.8.xml:52(surname)
|
||||
#: groupadd.8.xml:54(surname) gpasswd.1.xml:56(surname)
|
||||
#: faillog.8.xml:51(surname) faillog.5.xml:51(surname) expiry.1.xml:55(surname)
|
||||
#: chsh.1.xml:54(surname) chpasswd.8.xml:55(surname)
|
||||
#: chgpasswd.8.xml:51(surname) chfn.1.xml:54(surname) chage.1.xml:52(surname)
|
||||
msgid "François"
|
||||
msgstr ""
|
||||
|
||||
@@ -163,14 +160,13 @@ msgstr ""
|
||||
#: newusers.8.xml:68(contrib) newgrp.1.xml:54(contrib)
|
||||
#: logoutd.8.xml:53(contrib) login.defs.5.xml:118(contrib)
|
||||
#: login.access.5.xml:54(contrib) login.1.xml:86(contrib)
|
||||
#: limits.5.xml:55(contrib) lastlog.8.xml:54(contrib)
|
||||
#: gshadow.5.xml:42(contrib) grpck.8.xml:54(contrib) groups.1.xml:53(contrib)
|
||||
#: groupmod.8.xml:54(contrib) groupmems.8.xml:57(contrib)
|
||||
#: groupdel.8.xml:54(contrib) groupadd.8.xml:56(contrib)
|
||||
#: gpasswd.1.xml:58(contrib) faillog.8.xml:53(contrib)
|
||||
#: faillog.5.xml:53(contrib) expiry.1.xml:57(contrib) chsh.1.xml:56(contrib)
|
||||
#: chpasswd.8.xml:57(contrib) chgpasswd.8.xml:53(contrib)
|
||||
#: chfn.1.xml:56(contrib) chage.1.xml:54(contrib)
|
||||
#: limits.5.xml:55(contrib) lastlog.8.xml:54(contrib) gshadow.5.xml:42(contrib)
|
||||
#: grpck.8.xml:54(contrib) groups.1.xml:53(contrib) groupmod.8.xml:54(contrib)
|
||||
#: groupmems.8.xml:57(contrib) groupdel.8.xml:54(contrib)
|
||||
#: groupadd.8.xml:56(contrib) gpasswd.1.xml:58(contrib)
|
||||
#: faillog.8.xml:53(contrib) faillog.5.xml:53(contrib) expiry.1.xml:57(contrib)
|
||||
#: chsh.1.xml:56(contrib) chpasswd.8.xml:57(contrib)
|
||||
#: chgpasswd.8.xml:53(contrib) chfn.1.xml:56(contrib) chage.1.xml:54(contrib)
|
||||
msgid "shadow-utils maintainer, 2007 - now"
|
||||
msgstr ""
|
||||
|
||||
@@ -248,14 +244,13 @@ msgstr "redigera lösenordet, grupp, skugglösenord eller skuggruppfil"
|
||||
#: useradd.8.xml:88(replaceable) useradd.8.xml:100(replaceable)
|
||||
#: su.1.xml:88(replaceable) pwconv.8.xml:81(replaceable)
|
||||
#: pwconv.8.xml:87(replaceable) pwconv.8.xml:93(replaceable)
|
||||
#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg)
|
||||
#: passwd.1.xml:79(replaceable) newusers.8.xml:87(replaceable)
|
||||
#: lastlog.8.xml:73(replaceable) grpck.8.xml:72(arg)
|
||||
#: groupmod.8.xml:73(replaceable) groupdel.8.xml:73(replaceable)
|
||||
#: groupadd.8.xml:75(replaceable) faillog.8.xml:72(replaceable)
|
||||
#: chsh.1.xml:75(replaceable) chpasswd.8.xml:76(replaceable)
|
||||
#: chgpasswd.8.xml:72(replaceable) chfn.1.xml:75(replaceable)
|
||||
#: chage.1.xml:72(replaceable)
|
||||
#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg) passwd.1.xml:79(replaceable)
|
||||
#: newusers.8.xml:87(replaceable) lastlog.8.xml:73(replaceable)
|
||||
#: grpck.8.xml:72(arg) groupmod.8.xml:73(replaceable)
|
||||
#: groupdel.8.xml:73(replaceable) groupadd.8.xml:75(replaceable)
|
||||
#: faillog.8.xml:72(replaceable) chsh.1.xml:75(replaceable)
|
||||
#: chpasswd.8.xml:76(replaceable) chgpasswd.8.xml:72(replaceable)
|
||||
#: chfn.1.xml:75(replaceable) chage.1.xml:72(replaceable)
|
||||
msgid "options"
|
||||
msgstr "flaggor"
|
||||
|
||||
@@ -305,11 +300,10 @@ msgstr ""
|
||||
#: useradd.8.xml:124(title) su.1.xml:145(title) pwconv.8.xml:187(title)
|
||||
#: pwck.8.xml:176(title) passwd.1.xml:174(title) newusers.8.xml:265(title)
|
||||
#: login.1.xml:210(title) lastlog.8.xml:91(title) grpck.8.xml:147(title)
|
||||
#: groupmod.8.xml:89(title) groupmems.8.xml:100(title)
|
||||
#: groupdel.8.xml:88(title) groupadd.8.xml:93(title) gpasswd.1.xml:134(title)
|
||||
#: faillog.8.xml:89(title) expiry.1.xml:91(title) chsh.1.xml:95(title)
|
||||
#: chpasswd.8.xml:130(title) chgpasswd.8.xml:105(title) chfn.1.xml:111(title)
|
||||
#: chage.1.xml:91(title)
|
||||
#: groupmod.8.xml:89(title) groupmems.8.xml:100(title) groupdel.8.xml:88(title)
|
||||
#: groupadd.8.xml:93(title) gpasswd.1.xml:134(title) faillog.8.xml:89(title)
|
||||
#: expiry.1.xml:91(title) chsh.1.xml:95(title) chpasswd.8.xml:130(title)
|
||||
#: chgpasswd.8.xml:105(title) chfn.1.xml:111(title) chage.1.xml:91(title)
|
||||
msgid "OPTIONS"
|
||||
msgstr "FLAGGOR"
|
||||
|
||||
@@ -331,7 +325,7 @@ msgstr "Redigera gruppdatabasen."
|
||||
|
||||
#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:266(term)
|
||||
#: pwconv.8.xml:195(term) pwck.8.xml:186(term) passwd.1.xml:214(term)
|
||||
#: newusers.8.xml:283(term) lastlog.8.xml:107(term) grpck.8.xml:157(term)
|
||||
#: newusers.8.xml:283(term) lastlog.8.xml:118(term) grpck.8.xml:157(term)
|
||||
#: groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term)
|
||||
#: groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term)
|
||||
#: expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term)
|
||||
@@ -341,7 +335,7 @@ msgstr "<option>-h</option>, <option>--help</option>"
|
||||
|
||||
#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:268(para)
|
||||
#: pwconv.8.xml:197(para) pwck.8.xml:188(para) passwd.1.xml:216(para)
|
||||
#: newusers.8.xml:285(para) lastlog.8.xml:111(para) grpck.8.xml:159(para)
|
||||
#: newusers.8.xml:285(para) lastlog.8.xml:122(para) grpck.8.xml:159(para)
|
||||
#: groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para)
|
||||
#: groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para)
|
||||
#: expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para)
|
||||
@@ -367,7 +361,7 @@ msgstr "Tyst läge."
|
||||
|
||||
#: vipw.8.xml:138(term) usermod.8.xml:311(term) userdel.8.xml:146(term)
|
||||
#: useradd.8.xml:445(term) pwconv.8.xml:201(term) pwck.8.xml:209(term)
|
||||
#: passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:115(term)
|
||||
#: passwd.1.xml:301(term) newusers.8.xml:308(term) lastlog.8.xml:126(term)
|
||||
#: grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term)
|
||||
#: groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term)
|
||||
#: chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term)
|
||||
@@ -385,7 +379,7 @@ msgstr ""
|
||||
|
||||
#: vipw.8.xml:142(para) usermod.8.xml:315(para) userdel.8.xml:150(para)
|
||||
#: useradd.8.xml:449(para) pwconv.8.xml:205(para) pwck.8.xml:213(para)
|
||||
#: passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:119(para)
|
||||
#: passwd.1.xml:305(para) newusers.8.xml:312(para) lastlog.8.xml:130(para)
|
||||
#: grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para)
|
||||
#: groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para)
|
||||
#: faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para)
|
||||
@@ -414,18 +408,18 @@ msgstr "<option>-q</option>, <option>--quiet</option>"
|
||||
msgid "Indicates which user's tcb shadow file to edit."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:497(title) userdel.8.xml:171(title)
|
||||
#: vipw.8.xml:165(title) usermod.8.xml:496(title) userdel.8.xml:171(title)
|
||||
#: useradd.8.xml:647(title) su.1.xml:339(title) sg.1.xml:98(title)
|
||||
#: pwconv.8.xml:227(title) pwck.8.xml:252(title) passwd.1.xml:390(title)
|
||||
#: newusers.8.xml:362(title) newgrp.1.xml:109(title) login.1.xml:294(title)
|
||||
#: grpck.8.xml:209(title) groupmod.8.xml:193(title) groupmems.8.xml:199(title)
|
||||
#: groupdel.8.xml:128(title) groupadd.8.xml:219(title)
|
||||
#: gpasswd.1.xml:264(title) chsh.1.xml:154(title) chpasswd.8.xml:239(title)
|
||||
#: chgpasswd.8.xml:198(title) chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
#: groupdel.8.xml:128(title) groupadd.8.xml:219(title) gpasswd.1.xml:264(title)
|
||||
#: chsh.1.xml:154(title) chpasswd.8.xml:239(title) chgpasswd.8.xml:198(title)
|
||||
#: chfn.1.xml:193(title) chage.1.xml:244(title)
|
||||
msgid "CONFIGURATION"
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:498(para) userdel.8.xml:172(para)
|
||||
#: vipw.8.xml:166(para) usermod.8.xml:497(para) userdel.8.xml:172(para)
|
||||
#: useradd.8.xml:648(para) su.1.xml:340(para) sg.1.xml:99(para)
|
||||
#: pwck.8.xml:253(para) passwd.1.xml:391(para) newusers.8.xml:363(para)
|
||||
#: newgrp.1.xml:110(para) login.1.xml:295(para) grpck.8.xml:210(para)
|
||||
@@ -483,37 +477,35 @@ msgstr "HISTORIK"
|
||||
msgid "Editor to be used if <option>VISUAL</option> is not set."
|
||||
msgstr ""
|
||||
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:514(title) userdel.8.xml:188(title)
|
||||
#: vipw.8.xml:195(title) usermod.8.xml:513(title) userdel.8.xml:188(title)
|
||||
#: useradd.8.xml:675(title) suauth.5.xml:193(title) su.1.xml:367(title)
|
||||
#: sg.1.xml:110(title) shadow.5.xml:255(title) shadow.3.xml:226(title)
|
||||
#: pwconv.8.xml:250(title) pwck.8.xml:269(title) porttime.5.xml:130(title)
|
||||
#: passwd.5.xml:141(title) passwd.1.xml:408(title) newusers.8.xml:397(title)
|
||||
#: newgrp.1.xml:121(title) logoutd.8.xml:89(title)
|
||||
#: login.access.5.xml:121(title) login.1.xml:338(title)
|
||||
#: limits.5.xml:196(title) lastlog.8.xml:182(title) gshadow.5.xml:156(title)
|
||||
#: grpck.8.xml:221(title) groups.1.xml:100(title) groupmod.8.xml:205(title)
|
||||
#: groupmems.8.xml:211(title) groupdel.8.xml:140(title)
|
||||
#: groupadd.8.xml:233(title) gpasswd.1.xml:279(title) faillog.8.xml:243(title)
|
||||
#: faillog.5.xml:96(title) expiry.1.xml:121(title) chsh.1.xml:167(title)
|
||||
#: chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title) chfn.1.xml:207(title)
|
||||
#: chage.1.xml:256(title)
|
||||
#: login.access.5.xml:121(title) login.1.xml:338(title) limits.5.xml:196(title)
|
||||
#: lastlog.8.xml:204(title) gshadow.5.xml:156(title) grpck.8.xml:221(title)
|
||||
#: groups.1.xml:100(title) groupmod.8.xml:205(title) groupmems.8.xml:211(title)
|
||||
#: groupdel.8.xml:140(title) groupadd.8.xml:233(title) gpasswd.1.xml:279(title)
|
||||
#: faillog.8.xml:243(title) faillog.5.xml:96(title) expiry.1.xml:121(title)
|
||||
#: chsh.1.xml:167(title) chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title)
|
||||
#: chfn.1.xml:207(title) chage.1.xml:256(title)
|
||||
msgid "FILES"
|
||||
msgstr "FILER"
|
||||
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:517(filename)
|
||||
#: vipw.8.xml:198(filename) usermod.8.xml:516(filename)
|
||||
#: userdel.8.xml:191(filename) useradd.8.xml:690(filename)
|
||||
#: sg.1.xml:125(filename) pwck.8.xml:272(filename)
|
||||
#: newusers.8.xml:412(filename) newgrp.1.xml:136(filename)
|
||||
#: gshadow.5.xml:159(filename) grpck.8.xml:224(filename)
|
||||
#: groups.1.xml:103(filename) groupmod.8.xml:208(filename)
|
||||
#: groupmems.8.xml:214(filename) groupdel.8.xml:143(filename)
|
||||
#: groupadd.8.xml:236(filename) gpasswd.1.xml:72(filename)
|
||||
#: gpasswd.1.xml:75(filename) gpasswd.1.xml:282(filename)
|
||||
#: chgpasswd.8.xml:216(filename)
|
||||
#: sg.1.xml:125(filename) pwck.8.xml:272(filename) newusers.8.xml:412(filename)
|
||||
#: newgrp.1.xml:136(filename) gshadow.5.xml:159(filename)
|
||||
#: grpck.8.xml:224(filename) groups.1.xml:103(filename)
|
||||
#: groupmod.8.xml:208(filename) groupmems.8.xml:214(filename)
|
||||
#: groupdel.8.xml:143(filename) groupadd.8.xml:236(filename)
|
||||
#: gpasswd.1.xml:72(filename) gpasswd.1.xml:75(filename)
|
||||
#: gpasswd.1.xml:282(filename) chgpasswd.8.xml:216(filename)
|
||||
msgid "/etc/group"
|
||||
msgstr "/etc/group"
|
||||
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:519(para) userdel.8.xml:193(para)
|
||||
#: vipw.8.xml:200(para) usermod.8.xml:518(para) userdel.8.xml:193(para)
|
||||
#: useradd.8.xml:692(para) sg.1.xml:127(para) pwck.8.xml:274(para)
|
||||
#: newusers.8.xml:414(para) newgrp.1.xml:138(para) gshadow.5.xml:161(para)
|
||||
#: grpck.8.xml:226(para) groups.1.xml:105(para) groupmod.8.xml:210(para)
|
||||
@@ -522,7 +514,7 @@ msgstr "/etc/group"
|
||||
msgid "Group account information."
|
||||
msgstr "Gruppkontoinformation."
|
||||
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:523(filename)
|
||||
#: vipw.8.xml:204(filename) usermod.8.xml:522(filename)
|
||||
#: useradd.8.xml:696(filename) sg.1.xml:131(filename)
|
||||
#: newusers.8.xml:418(filename) newgrp.1.xml:142(filename)
|
||||
#: gshadow.5.xml:165(filename) grpck.8.xml:230(filename)
|
||||
@@ -533,7 +525,7 @@ msgstr "Gruppkontoinformation."
|
||||
msgid "/etc/gshadow"
|
||||
msgstr "/etc/gshadow"
|
||||
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:525(para) useradd.8.xml:698(para)
|
||||
#: vipw.8.xml:206(para) usermod.8.xml:524(para) useradd.8.xml:698(para)
|
||||
#: sg.1.xml:133(para) newusers.8.xml:420(para) newgrp.1.xml:144(para)
|
||||
#: gshadow.5.xml:167(para) grpck.8.xml:232(para) groupmod.8.xml:216(para)
|
||||
#: groupdel.8.xml:151(para) groupadd.8.xml:244(para) gpasswd.1.xml:290(para)
|
||||
@@ -541,7 +533,7 @@ msgstr "/etc/gshadow"
|
||||
msgid "Secure group account information."
|
||||
msgstr "Säker gruppkontoinformation."
|
||||
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:535(filename)
|
||||
#: vipw.8.xml:210(filename) usermod.8.xml:534(filename)
|
||||
#: userdel.8.xml:203(filename) useradd.8.xml:678(filename)
|
||||
#: su.1.xml:370(filename) sg.1.xml:113(filename) shadow.5.xml:258(filename)
|
||||
#: pwck.8.xml:278(filename) passwd.5.xml:144(filename)
|
||||
@@ -554,7 +546,7 @@ msgstr "Säker gruppkontoinformation."
|
||||
msgid "/etc/passwd"
|
||||
msgstr "/etc/passwd"
|
||||
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:537(para) userdel.8.xml:205(para)
|
||||
#: vipw.8.xml:212(para) usermod.8.xml:536(para) userdel.8.xml:205(para)
|
||||
#: useradd.8.xml:680(para) su.1.xml:372(para) sg.1.xml:115(para)
|
||||
#: shadow.5.xml:260(para) pwck.8.xml:280(para) passwd.5.xml:146(para)
|
||||
#: passwd.1.xml:413(para) newusers.8.xml:402(para) newgrp.1.xml:126(para)
|
||||
@@ -564,7 +556,7 @@ msgstr "/etc/passwd"
|
||||
msgid "User account information."
|
||||
msgstr "Användarkontoinformation."
|
||||
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:541(filename)
|
||||
#: vipw.8.xml:216(filename) usermod.8.xml:540(filename)
|
||||
#: userdel.8.xml:209(filename) useradd.8.xml:684(filename)
|
||||
#: su.1.xml:376(filename) sg.1.xml:119(filename) shadow.5.xml:264(filename)
|
||||
#: shadow.3.xml:229(filename) pwck.8.xml:284(filename)
|
||||
@@ -575,7 +567,7 @@ msgstr "Användarkontoinformation."
|
||||
msgid "/etc/shadow"
|
||||
msgstr "/etc/shadow"
|
||||
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:543(para) userdel.8.xml:211(para)
|
||||
#: vipw.8.xml:218(para) usermod.8.xml:542(para) userdel.8.xml:211(para)
|
||||
#: useradd.8.xml:686(para) su.1.xml:378(para) sg.1.xml:121(para)
|
||||
#: shadow.5.xml:266(para) shadow.3.xml:231(para) pwck.8.xml:286(para)
|
||||
#: passwd.1.xml:419(para) newusers.8.xml:408(para) newgrp.1.xml:132(para)
|
||||
@@ -584,7 +576,7 @@ msgstr "/etc/shadow"
|
||||
msgid "Secure user account information."
|
||||
msgstr "Säker användarkontoinformation."
|
||||
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:562(title) userdel.8.xml:308(title)
|
||||
#: vipw.8.xml:225(title) usermod.8.xml:561(title) userdel.8.xml:308(title)
|
||||
#: useradd.8.xml:804(title) suauth.5.xml:222(title) su.1.xml:438(title)
|
||||
#: sg.1.xml:140(title) shadow.5.xml:283(title) shadow.3.xml:238(title)
|
||||
#: pwconv.8.xml:262(title) pwck.8.xml:344(title) porttime.5.xml:142(title)
|
||||
@@ -659,15 +651,15 @@ msgstr ""
|
||||
#: usermod.8.xml:46(surname) userdel.8.xml:46(surname)
|
||||
#: useradd.8.xml:57(surname) su.1.xml:57(surname) sg.1.xml:41(surname)
|
||||
#: shadow.5.xml:40(surname) shadow.3.xml:40(surname) pwck.8.xml:46(surname)
|
||||
#: porttime.5.xml:40(surname) passwd.5.xml:40(surname)
|
||||
#: passwd.1.xml:47(surname) newusers.8.xml:55(surname)
|
||||
#: newgrp.1.xml:41(surname) logoutd.8.xml:40(surname)
|
||||
#: login.defs.5.xml:105(surname) login.1.xml:73(surname)
|
||||
#: lastlog.8.xml:41(surname) grpck.8.xml:41(surname) groups.1.xml:40(surname)
|
||||
#: groupmod.8.xml:41(surname) groupdel.8.xml:41(surname)
|
||||
#: groupadd.8.xml:43(surname) faillog.8.xml:40(surname)
|
||||
#: faillog.5.xml:40(surname) expiry.1.xml:44(surname) chsh.1.xml:43(surname)
|
||||
#: chpasswd.8.xml:44(surname) chfn.1.xml:43(surname) chage.1.xml:41(surname)
|
||||
#: porttime.5.xml:40(surname) passwd.5.xml:40(surname) passwd.1.xml:47(surname)
|
||||
#: newusers.8.xml:55(surname) newgrp.1.xml:41(surname)
|
||||
#: logoutd.8.xml:40(surname) login.defs.5.xml:105(surname)
|
||||
#: login.1.xml:73(surname) lastlog.8.xml:41(surname) grpck.8.xml:41(surname)
|
||||
#: groups.1.xml:40(surname) groupmod.8.xml:41(surname)
|
||||
#: groupdel.8.xml:41(surname) groupadd.8.xml:43(surname)
|
||||
#: faillog.8.xml:40(surname) faillog.5.xml:40(surname) expiry.1.xml:44(surname)
|
||||
#: chsh.1.xml:43(surname) chpasswd.8.xml:44(surname) chfn.1.xml:43(surname)
|
||||
#: chage.1.xml:41(surname)
|
||||
msgid "Haugh"
|
||||
msgstr ""
|
||||
|
||||
@@ -1070,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</"
|
||||
@@ -1099,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</"
|
||||
@@ -1112,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 ""
|
||||
|
||||
@@ -1123,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</"
|
||||
@@ -1146,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</"
|
||||
@@ -1159,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 ""
|
||||
|
||||
@@ -1188,9 +1180,9 @@ msgstr ""
|
||||
|
||||
#: usermod.8.xml:478(title) userdel.8.xml:281(title) useradd.8.xml:623(title)
|
||||
#: su.1.xml:331(title) shadow.3.xml:218(title) passwd.1.xml:372(title)
|
||||
#: newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:194(title)
|
||||
#: groupdel.8.xml:116(title) groupadd.8.xml:257(title)
|
||||
#: gpasswd.1.xml:252(title) faillog.8.xml:232(title) chpasswd.8.xml:231(title)
|
||||
#: newusers.8.xml:350(title) login.1.xml:260(title) lastlog.8.xml:216(title)
|
||||
#: groupdel.8.xml:116(title) groupadd.8.xml:257(title) gpasswd.1.xml:252(title)
|
||||
#: faillog.8.xml:232(title) chpasswd.8.xml:231(title)
|
||||
#: chgpasswd.8.xml:186(title)
|
||||
msgid "CAVEATS"
|
||||
msgstr "TÄNK PÅ"
|
||||
@@ -1200,17 +1192,17 @@ msgid ""
|
||||
"You must make certain that the named user is not executing any processes "
|
||||
"when this command is being executed if the user's numerical user ID, the "
|
||||
"user's name, or the user's home directory is being changed. "
|
||||
"<command>usermod</command> checks this on Linux, but only check if the user "
|
||||
"is logged in according to utmp on other architectures."
|
||||
"<command>usermod</command> checks this on Linux. On other platforms it only "
|
||||
"uses utmp to check if the user is logged in."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:487(para)
|
||||
#: usermod.8.xml:486(para)
|
||||
msgid ""
|
||||
"You must change the owner of any <command>crontab</command> files or "
|
||||
"<command>at</command> jobs manually."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:491(para)
|
||||
#: usermod.8.xml:490(para)
|
||||
msgid "You must make any changes involving NIS on the NIS server."
|
||||
msgstr ""
|
||||
|
||||
@@ -1429,7 +1421,7 @@ msgid ""
|
||||
"algorithm: <placeholder-1/>"
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:529(filename) userdel.8.xml:197(filename)
|
||||
#: usermod.8.xml:528(filename) userdel.8.xml:197(filename)
|
||||
#: useradd.8.xml:726(filename) su.1.xml:382(filename)
|
||||
#: pwconv.8.xml:253(filename) passwd.1.xml:423(filename)
|
||||
#: newusers.8.xml:424(filename) login.access.5.xml:124(filename)
|
||||
@@ -1440,7 +1432,7 @@ msgstr ""
|
||||
msgid "/etc/login.defs"
|
||||
msgstr "/etc/login.defs"
|
||||
|
||||
#: usermod.8.xml:531(para) userdel.8.xml:199(para) useradd.8.xml:728(para)
|
||||
#: usermod.8.xml:530(para) userdel.8.xml:199(para) useradd.8.xml:728(para)
|
||||
#: su.1.xml:384(para) pwconv.8.xml:255(para) passwd.1.xml:425(para)
|
||||
#: newusers.8.xml:426(para) login.access.5.xml:126(para) login.1.xml:391(para)
|
||||
#: groupmod.8.xml:222(para) groupadd.8.xml:250(para) chsh.1.xml:184(para)
|
||||
@@ -1448,31 +1440,31 @@ msgstr "/etc/login.defs"
|
||||
msgid "Shadow password suite configuration."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:547(filename) userdel.8.xml:215(filename)
|
||||
#: usermod.8.xml:546(filename) userdel.8.xml:215(filename)
|
||||
#: useradd.8.xml:714(filename) newusers.8.xml:436(filename)
|
||||
#, fuzzy
|
||||
#| msgid "/etc/suauth"
|
||||
msgid "/etc/subgid"
|
||||
msgstr "/etc/suauth"
|
||||
|
||||
#: usermod.8.xml:549(para) userdel.8.xml:217(para) useradd.8.xml:716(para)
|
||||
#: usermod.8.xml:548(para) userdel.8.xml:217(para) useradd.8.xml:716(para)
|
||||
#: newusers.8.xml:438(para)
|
||||
msgid "Per user subordinate group IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:553(filename) userdel.8.xml:221(filename)
|
||||
#: usermod.8.xml:552(filename) userdel.8.xml:221(filename)
|
||||
#: useradd.8.xml:720(filename) newusers.8.xml:442(filename)
|
||||
#, fuzzy
|
||||
#| msgid "/etc/suauth"
|
||||
msgid "/etc/subuid"
|
||||
msgstr "/etc/suauth"
|
||||
|
||||
#: usermod.8.xml:555(para) userdel.8.xml:223(para) useradd.8.xml:722(para)
|
||||
#: usermod.8.xml:554(para) userdel.8.xml:223(para) useradd.8.xml:722(para)
|
||||
#: newusers.8.xml:444(para)
|
||||
msgid "Per user subordinate user IDs."
|
||||
msgstr ""
|
||||
|
||||
#: usermod.8.xml:563(para)
|
||||
#: usermod.8.xml:562(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "<citerefentry><refentrytitle>chfn</refentrytitle><manvolnum>1</"
|
||||
@@ -1708,9 +1700,8 @@ msgstr "lyckad"
|
||||
#: passwd.1.xml:449(replaceable) newgrp.1.xml:59(manvolnum)
|
||||
#: login.1.xml:91(manvolnum) grpck.8.xml:256(replaceable)
|
||||
#: groups.1.xml:58(manvolnum) gpasswd.1.xml:63(manvolnum)
|
||||
#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum)
|
||||
#: chfn.1.xml:61(manvolnum) chage.1.xml:59(manvolnum)
|
||||
#: chage.1.xml:289(replaceable)
|
||||
#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum) chfn.1.xml:61(manvolnum)
|
||||
#: chage.1.xml:59(manvolnum) chage.1.xml:289(replaceable)
|
||||
msgid "1"
|
||||
msgstr "1"
|
||||
|
||||
@@ -2072,7 +2063,7 @@ msgid ""
|
||||
"<option>PASS_MAX_DAYS</option> and others). <placeholder-1/> Example: "
|
||||
"<option>-K</option> <replaceable>PASS_MAX_DAYS</"
|
||||
"replaceable>=<replaceable>-1</replaceable> can be used when creating system "
|
||||
"account to turn off password ageing, even though system account has no "
|
||||
"account to turn off password aging, even though system account has no "
|
||||
"password at all. Multiple <option>-K</option> options can be specified, e."
|
||||
"g.: <option>-K</option> <replaceable>UID_MIN</"
|
||||
"replaceable>=<replaceable>100</replaceable> <option>-K</option> "
|
||||
@@ -2101,7 +2092,7 @@ msgstr ""
|
||||
#: useradd.8.xml:327(para)
|
||||
msgid ""
|
||||
"By default, the user's entries in the lastlog and faillog databases are "
|
||||
"resetted to avoid reusing the entry from a previously deleted user."
|
||||
"reset to avoid reusing the entry from a previously deleted user."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:335(term)
|
||||
@@ -2121,11 +2112,11 @@ msgid ""
|
||||
"is not enabled, no home directories are created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:354(option)
|
||||
#: useradd.8.xml:353(term)
|
||||
#, fuzzy
|
||||
#| msgid "-"
|
||||
msgid "-M"
|
||||
msgstr "-"
|
||||
#| msgid "<option>-m</option>, <option>--create-home</option>"
|
||||
msgid "<option>-M</option>, <option>--no-create-home</option>"
|
||||
msgstr "<option>-m</option>, <option>--create-home</option>"
|
||||
|
||||
#: useradd.8.xml:357(para)
|
||||
msgid ""
|
||||
@@ -2204,10 +2195,10 @@ msgstr ""
|
||||
#: useradd.8.xml:434(para)
|
||||
msgid ""
|
||||
"Note that <command>useradd</command> will not create a home directory for "
|
||||
"such an user, regardless of the default setting in <filename>/etc/login."
|
||||
"defs</filename> (<option>CREATE_HOME</option>). You have to specify the "
|
||||
"<option>-m</option> options if you want a home directory for a system "
|
||||
"account to be created."
|
||||
"such a user, regardless of the default setting in <filename>/etc/login.defs</"
|
||||
"filename> (<option>CREATE_HOME</option>). You have to specify the <option>-"
|
||||
"m</option> options if you want a home directory for a system account to be "
|
||||
"created."
|
||||
msgstr ""
|
||||
|
||||
#: useradd.8.xml:461(para)
|
||||
@@ -2764,7 +2755,7 @@ msgstr ""
|
||||
#, no-wrap
|
||||
msgid ""
|
||||
"\n"
|
||||
" 1) the user su is targetting\n"
|
||||
" 1) the user su is targeting\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
@@ -2809,14 +2800,23 @@ msgstr ""
|
||||
"emphasis> följt av en lista med användarnamn separerade med \",\""
|
||||
|
||||
#: suauth.5.xml:107(para)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "from-id is formatted the same as to-id except the extra word "
|
||||
#| "<emphasis>GROUP</emphasis> is recognised. <emphasis>ALL EXCEPT GROUP</"
|
||||
#| "emphasis> is perfectly valid too. Following <emphasis>GROUP</emphasis> "
|
||||
#| "appears one or more group names, delimited by \",\". It is not sufficient "
|
||||
#| "to have primary group id of the relevant group, an entry in "
|
||||
#| "<citerefentry><refentrytitle>/etc/group</refentrytitle><manvolnum>5</"
|
||||
#| "manvolnum></citerefentry> is neccessary."
|
||||
msgid ""
|
||||
"from-id is formatted the same as to-id except the extra word "
|
||||
"<emphasis>GROUP</emphasis> is recognised. <emphasis>ALL EXCEPT GROUP</"
|
||||
"<emphasis>GROUP</emphasis> is recognized. <emphasis>ALL EXCEPT GROUP</"
|
||||
"emphasis> is perfectly valid too. Following <emphasis>GROUP</emphasis> "
|
||||
"appears one or more group names, delimited by \",\". It is not sufficient to "
|
||||
"have primary group id of the relevant group, an entry in "
|
||||
"<citerefentry><refentrytitle>/etc/group</refentrytitle><manvolnum>5</"
|
||||
"manvolnum></citerefentry> is neccessary."
|
||||
"manvolnum></citerefentry> is necessary."
|
||||
msgstr ""
|
||||
"från-id är formaterad på samma sätt som till-id förutom att det extra ordet "
|
||||
"<emphasis>GROUP</emphasis> känns igen. <emphasis>ALL EXCEPT GROUP</emphasis> "
|
||||
@@ -2954,9 +2954,8 @@ msgstr ""
|
||||
"citerefentry>."
|
||||
|
||||
#: su.1.xml:58(contrib) shadow.5.xml:41(contrib) shadow.3.xml:41(contrib)
|
||||
#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib)
|
||||
#: passwd.1.xml:48(contrib) login.1.xml:74(contrib) faillog.8.xml:41(contrib)
|
||||
#: faillog.5.xml:41(contrib)
|
||||
#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib) passwd.1.xml:48(contrib)
|
||||
#: login.1.xml:74(contrib) faillog.8.xml:41(contrib) faillog.5.xml:41(contrib)
|
||||
msgid "Creation, 1989"
|
||||
msgstr ""
|
||||
|
||||
@@ -3065,7 +3064,7 @@ msgstr "Ange ett kommando som ska startas av skalet med <option>-c</option>."
|
||||
#: su.1.xml:158(para)
|
||||
msgid ""
|
||||
"The executed command will have no controlling terminal. This option cannot "
|
||||
"be used to execute interractive programs which need a controlling TTY."
|
||||
"be used to execute interactive programs which need a controlling TTY."
|
||||
msgstr ""
|
||||
|
||||
#: su.1.xml:168(term)
|
||||
@@ -3709,7 +3708,7 @@ msgstr ""
|
||||
|
||||
#: shadow.5.xml:117(para) gshadow.5.xml:107(para)
|
||||
msgid ""
|
||||
"A password field which starts with a exclamation mark means that the "
|
||||
"A password field which starts with an exclamation mark means that the "
|
||||
"password is locked. The remaining characters on the line represent the "
|
||||
"password field before the password was locked."
|
||||
msgstr ""
|
||||
@@ -3729,7 +3728,7 @@ msgstr ""
|
||||
#: shadow.5.xml:134(para)
|
||||
msgid ""
|
||||
"The value 0 has a special meaning, which is that the user should change her "
|
||||
"pasword the next time she will log in the system."
|
||||
"password the next time she will log in the system."
|
||||
msgstr ""
|
||||
|
||||
#: shadow.5.xml:139(para)
|
||||
@@ -3843,7 +3842,7 @@ msgstr ""
|
||||
#: shadow.5.xml:229(para)
|
||||
msgid ""
|
||||
"Note that an account expiration differs from a password expiration. In case "
|
||||
"of an acount expiration, the user shall not be allowed to login. In case of "
|
||||
"of an account expiration, the user shall not be allowed to login. In case of "
|
||||
"a password expiration, the user is not allowed to login using her password."
|
||||
msgstr ""
|
||||
|
||||
@@ -4141,18 +4140,15 @@ msgstr ""
|
||||
msgid "pwconv"
|
||||
msgstr "pwconv"
|
||||
|
||||
#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command)
|
||||
#: login.defs.5.xml:438(term)
|
||||
#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command) login.defs.5.xml:438(term)
|
||||
msgid "pwunconv"
|
||||
msgstr "pwunconv"
|
||||
|
||||
#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command)
|
||||
#: login.defs.5.xml:340(term)
|
||||
#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command) login.defs.5.xml:340(term)
|
||||
msgid "grpconv"
|
||||
msgstr "grpconv"
|
||||
|
||||
#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command)
|
||||
#: login.defs.5.xml:346(term)
|
||||
#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command) login.defs.5.xml:346(term)
|
||||
msgid "grpunconv"
|
||||
msgstr "grpunconv"
|
||||
|
||||
@@ -4324,8 +4320,7 @@ msgstr "validera integriteten för lösenordsfiler"
|
||||
|
||||
#: pwck.8.xml:80(replaceable) passwd.5.xml:57(refentrytitle)
|
||||
#: passwd.5.xml:64(refname) passwd.1.xml:64(refentrytitle)
|
||||
#: passwd.1.xml:71(refname) passwd.1.xml:77(command)
|
||||
#: login.defs.5.xml:409(term)
|
||||
#: passwd.1.xml:71(refname) passwd.1.xml:77(command) login.defs.5.xml:409(term)
|
||||
msgid "passwd"
|
||||
msgstr "passwd"
|
||||
|
||||
@@ -4485,7 +4480,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Note that when <option>USE_TCB</option> is enabled, you cannot specify an "
|
||||
"alternative <replaceable>shadow</replaceable> file. In future releases, this "
|
||||
"paramater could be replaced by an alternate TCB directory."
|
||||
"parameter could be replaced by an alternate TCB directory."
|
||||
msgstr ""
|
||||
|
||||
#: pwck.8.xml:312(para)
|
||||
@@ -4811,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 ""
|
||||
@@ -4829,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."
|
||||
@@ -4934,7 +4929,7 @@ msgstr ""
|
||||
|
||||
#: passwd.1.xml:166(para)
|
||||
msgid ""
|
||||
"You can find advices on how to choose a strong password on http://en."
|
||||
"You can find advice on how to choose a strong password on http://en."
|
||||
"wikipedia.org/wiki/Password_strength"
|
||||
msgstr ""
|
||||
|
||||
@@ -4974,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."
|
||||
@@ -5056,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 "
|
||||
@@ -5133,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 "
|
||||
@@ -5305,8 +5300,8 @@ msgstr "PASS_MIN_DAYS (nummer)"
|
||||
#: passwd.1.xml:35(para) login.defs.5.xml:35(para)
|
||||
msgid ""
|
||||
"Number of significant characters in the password for crypt(). "
|
||||
"<option>PASS_MAX_LEN</option> is 8 by default. Don't change unless your crypt"
|
||||
"() is better. This is ignored if <option>MD5_CRYPT_ENAB</option> set to "
|
||||
"<option>PASS_MAX_LEN</option> is 8 by default. Don't change unless your "
|
||||
"crypt() is better. This is ignored if <option>MD5_CRYPT_ENAB</option> set to "
|
||||
"<replaceable>yes</replaceable>."
|
||||
msgstr ""
|
||||
|
||||
@@ -5478,7 +5473,7 @@ msgstr "HISTORIK"
|
||||
#: nologin.8.xml:91(para)
|
||||
#, fuzzy
|
||||
#| msgid "The <command>nologin</command> command appeared in BSD 4.4."
|
||||
msgid "The <command>nologin</command> command appearred in BSD 4.4."
|
||||
msgid "The <command>nologin</command> command appeared in BSD 4.4."
|
||||
msgstr "Kommandot <command>nologin</command> dök upp i BSD 4.4."
|
||||
|
||||
#: newusers.8.xml:72(refentrytitle) newusers.8.xml:79(refname)
|
||||
@@ -5520,7 +5515,7 @@ msgstr ""
|
||||
|
||||
#: newusers.8.xml:116(para)
|
||||
msgid ""
|
||||
"It can be the name of a new user or the name of an existing user (or an user "
|
||||
"It can be the name of a new user or the name of an existing user (or a user "
|
||||
"created before by <command>newusers</command>). In case of an existing user, "
|
||||
"the user's information will be changed, otherwise a new user will be created."
|
||||
msgstr ""
|
||||
@@ -5549,7 +5544,7 @@ msgstr ""
|
||||
|
||||
#: newusers.8.xml:144(para)
|
||||
msgid ""
|
||||
"If the field is empty, an new (unused) UID will be defined automatically by "
|
||||
"If the field is empty, a new (unused) UID will be defined automatically by "
|
||||
"<command>newusers</command>."
|
||||
msgstr ""
|
||||
|
||||
@@ -5559,7 +5554,7 @@ msgstr ""
|
||||
|
||||
#: newusers.8.xml:152(para)
|
||||
msgid ""
|
||||
"If this field contains the name of an existing user (or the name of an user "
|
||||
"If this field contains the name of an existing user (or the name of a user "
|
||||
"created before by <command>newusers</command>), the UID of the specified "
|
||||
"user will be used."
|
||||
msgstr ""
|
||||
@@ -6860,7 +6855,9 @@ msgid "D: max data size (KB)"
|
||||
msgstr "D: maximal datastorlek (KB)"
|
||||
|
||||
#: limits.5.xml:111(para)
|
||||
msgid "F: maximum filesize (KB)"
|
||||
#, fuzzy
|
||||
#| msgid "F: maximum filesize (KB)"
|
||||
msgid "F: maximum file size (KB)"
|
||||
msgstr "F: maximal filstorlek (KB)"
|
||||
|
||||
#: limits.5.xml:112(para)
|
||||
@@ -6936,7 +6933,7 @@ msgstr ""
|
||||
#: limits.5.xml:145(para)
|
||||
msgid ""
|
||||
"Be aware that after <emphasis remap=\"I\">username</emphasis> the rest of "
|
||||
"the line is considered a limit string, thus comments are not allowed. A "
|
||||
"the line is considered a limit string, thus comments are not allowed. An "
|
||||
"invalid limits string will be rejected (not considered) by the "
|
||||
"<command>login</command> program."
|
||||
msgstr ""
|
||||
@@ -6957,13 +6954,13 @@ msgstr ""
|
||||
|
||||
#: limits.5.xml:165(para)
|
||||
msgid ""
|
||||
"If more than one line with limits for an user exist, only the first line for "
|
||||
"If more than one line with limits for a user exist, only the first line for "
|
||||
"this user will be considered."
|
||||
msgstr ""
|
||||
|
||||
#: limits.5.xml:170(para)
|
||||
msgid ""
|
||||
"If no lines are specified for an user, the last <replaceable>@group</"
|
||||
"If no lines are specified for a user, the last <replaceable>@group</"
|
||||
"replaceable> line matching a group whose the user is a member of will be "
|
||||
"considered, or the last line with default limits if no groups contain the "
|
||||
"user."
|
||||
@@ -7041,7 +7038,33 @@ msgid ""
|
||||
"Print only lastlog records older than <emphasis remap=\"I\">DAYS</emphasis>."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:127(term) faillog.8.xml:192(term)
|
||||
#: lastlog.8.xml:107(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-q</option>, <option>--quiet</option>"
|
||||
msgid "<option>-C</option>, <option>--clear</option>"
|
||||
msgstr "<option>-q</option>, <option>--quiet</option>"
|
||||
|
||||
#: lastlog.8.xml:111(para)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-m</option>, <option>--create-home</option>"
|
||||
msgid ""
|
||||
"Clear lastlog record of a user. This option can be used only together with "
|
||||
"<option>-u</option> (<option>--user</option>))."
|
||||
msgstr "<option>-m</option>, <option>--create-home</option>"
|
||||
|
||||
#: lastlog.8.xml:138(term)
|
||||
#, fuzzy
|
||||
#| msgid "<option>-r</option>, <option>--reset</option>"
|
||||
msgid "<option>-S</option>, <option>--set</option>"
|
||||
msgstr "<option>-r</option>, <option>--reset</option>"
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
msgid ""
|
||||
"Set lastlog record of a user to the current time. This option can be used "
|
||||
"only together with <option>-u</option> (<option>--user</option>))."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:149(term) faillog.8.xml:192(term)
|
||||
msgid ""
|
||||
"<option>-t</option>, <option>--time</option> <replaceable>DAYS</"
|
||||
"replaceable>"
|
||||
@@ -7049,13 +7072,13 @@ msgstr ""
|
||||
"<option>-t</option>, <option>--time</option> <replaceable>DAGAR</"
|
||||
"replaceable>"
|
||||
|
||||
#: lastlog.8.xml:131(para)
|
||||
#: lastlog.8.xml:153(para)
|
||||
msgid ""
|
||||
"Print the lastlog records more recent than <emphasis remap=\"I\">DAYS</"
|
||||
"emphasis>."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:138(term) faillog.8.xml:202(term)
|
||||
#: lastlog.8.xml:160(term) faillog.8.xml:202(term)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "<option>-K</option>, <option>--key</option> <replaceable>KEY</"
|
||||
@@ -7067,11 +7090,11 @@ msgstr ""
|
||||
"<option>-K</option>, <option>--key</option> <replaceable>NYCKEL</"
|
||||
"replaceable>=<replaceable>VÄRDE</replaceable>"
|
||||
|
||||
#: lastlog.8.xml:142(para)
|
||||
#: lastlog.8.xml:164(para)
|
||||
msgid "Print the lastlog record of the specified user(s)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:145(para) faillog.8.xml:211(para)
|
||||
#: lastlog.8.xml:167(para) faillog.8.xml:211(para)
|
||||
msgid ""
|
||||
"The users can be specified by a login name, a numerical user ID, or a "
|
||||
"<replaceable>RANGE</replaceable> of users. This <replaceable>RANGE</"
|
||||
@@ -7080,24 +7103,24 @@ msgid ""
|
||||
"UID_MAX</replaceable>), or a min value (<replaceable>UID_MIN-</replaceable>)."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:157(para)
|
||||
#: lastlog.8.xml:179(para)
|
||||
msgid ""
|
||||
"If the user has never logged in the message <emphasis>** Never logged in**</"
|
||||
"emphasis> will be displayed instead of the port and time."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:162(para)
|
||||
#: lastlog.8.xml:184(para)
|
||||
msgid ""
|
||||
"Only the entries for the current users of the system will be displayed. "
|
||||
"Other entries may exist for users that were deleted previously."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:170(title) groups.1.xml:90(title) chsh.1.xml:140(title)
|
||||
#: lastlog.8.xml:192(title) groups.1.xml:90(title) chsh.1.xml:140(title)
|
||||
#: chage.1.xml:231(title)
|
||||
msgid "NOTE"
|
||||
msgstr "NOTERA"
|
||||
|
||||
#: lastlog.8.xml:171(para)
|
||||
#: lastlog.8.xml:193(para)
|
||||
msgid ""
|
||||
"The <filename>lastlog</filename> file is a database which contains info on "
|
||||
"the last login of each user. You should not rotate it. It is a sparse file, "
|
||||
@@ -7107,15 +7130,15 @@ msgid ""
|
||||
"its real size with \"<command>ls -s</command>\"."
|
||||
msgstr ""
|
||||
|
||||
#: lastlog.8.xml:185(filename)
|
||||
#: lastlog.8.xml:207(filename)
|
||||
msgid "/var/log/lastlog"
|
||||
msgstr "/var/log/lastlog"
|
||||
|
||||
#: lastlog.8.xml:187(para)
|
||||
#: lastlog.8.xml:209(para)
|
||||
msgid "Database times of previous user logins."
|
||||
msgstr "Databastider för tidigare användarinloggningar."
|
||||
|
||||
#: lastlog.8.xml:195(para)
|
||||
#: lastlog.8.xml:217(para)
|
||||
msgid ""
|
||||
"Large gaps in UID numbers will cause the lastlog program to run longer with "
|
||||
"no output to the screen (i.e. if in lastlog database there is no entries for "
|
||||
@@ -7179,7 +7202,7 @@ msgstr ""
|
||||
#| "modified using the <citerefentry><refentrytitle>chfn</"
|
||||
#| "refentrytitle><manvolnum>1</manvolnum></citerefentry> utility."
|
||||
msgid ""
|
||||
"The password is used when an user who is not a member of the group wants to "
|
||||
"The password is used when a user who is not a member of the group wants to "
|
||||
"gain the permissions of this group (see <citerefentry><refentrytitle>newgrp</"
|
||||
"refentrytitle><manvolnum>1</manvolnum></citerefentry>)."
|
||||
msgstr ""
|
||||
@@ -7648,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)."
|
||||
@@ -7683,7 +7706,7 @@ msgstr ""
|
||||
#: groupmems.8.xml:109(para)
|
||||
#, fuzzy
|
||||
#| msgid "Add a new user to the group membership list."
|
||||
msgid "Add an user to the group membership list."
|
||||
msgid "Add a user to the group membership list."
|
||||
msgstr "Lägg till en ny användare till gruppens medlemslista."
|
||||
|
||||
#: groupmems.8.xml:110(para) groupmems.8.xml:126(para)
|
||||
@@ -8682,7 +8705,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The default encryption algorithm can be defined for the system with the "
|
||||
"<option>ENCRYPT_METHOD</option> or <option>MD5_CRYPT_ENAB</option> variables "
|
||||
"of <filename>/etc/login.defs</filename>, and can be overwitten with the "
|
||||
"of <filename>/etc/login.defs</filename>, and can be overwritten with the "
|
||||
"<option>-e</option>, <option>-m</option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
@@ -8697,7 +8720,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"<phrase condition=\"pam\">Except when PAM is used to encrypt the passwords,</"
|
||||
"phrase><command>chpasswd</command> first updates all the passwords in "
|
||||
"memory, and then commits all the changes to disk if no errors occured for "
|
||||
"memory, and then commits all the changes to disk if no errors occurred for "
|
||||
"any user."
|
||||
msgstr ""
|
||||
|
||||
@@ -8861,7 +8884,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The default encryption algorithm can be defined for the system with the "
|
||||
"<option>ENCRYPT_METHOD</option> variable of <filename>/etc/login.defs</"
|
||||
"filename>, and can be overwiten with the <option>-e</option>, <option>-m</"
|
||||
"filename>, and can be overwritten with the <option>-e</option>, <option>-m</"
|
||||
"option>, or <option>-c</option> options."
|
||||
msgstr ""
|
||||
|
||||
@@ -9041,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)
|
||||
@@ -9133,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 ""
|
||||
@@ -9158,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 ""
|
||||
|
||||
@@ -9183,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)
|
||||
@@ -9207,6 +9230,11 @@ msgstr ""
|
||||
msgid "translator-credits"
|
||||
msgstr "Daniel Nylander <po@danielnylander.se>, 2006."
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "-"
|
||||
#~ msgid "-M"
|
||||
#~ msgstr "-"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "<citerefentry><refentrytitle>chfn</refentrytitle><manvolnum>1</"
|
||||
#~ "manvolnum></citerefentry>, <citerefentry><refentrytitle>chsh</"
|
||||
|
||||
497
man/po/zh_CN.po
497
man/po/zh_CN.po
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
@@ -243,7 +253,7 @@
|
||||
<para condition="tcb">
|
||||
Note that when <option>USE_TCB</option> is enabled, you cannot
|
||||
specify an alternative <replaceable>shadow</replaceable> file. In
|
||||
future releases, this paramater could be replaced by an alternate
|
||||
future releases, this parameter could be replaced by an alternate
|
||||
TCB directory.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@@ -95,6 +95,19 @@
|
||||
<varlistentry>
|
||||
<term><emphasis role="bold">encrypted password</emphasis></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This field may be empty, in which case no passwords are
|
||||
required to authenticate as the specified login name.
|
||||
However, some applications which read the
|
||||
<filename>/etc/shadow</filename> file may decide not to permit
|
||||
any access at all if the password field is empty.
|
||||
</para>
|
||||
<para>
|
||||
A password field which starts with an exclamation mark means
|
||||
that the password is locked. The remaining characters on the
|
||||
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
|
||||
@@ -107,19 +120,6 @@
|
||||
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.
|
||||
However, some applications which read the
|
||||
<filename>/etc/shadow</filename> file may decide not to permit
|
||||
any access at all if the password field is empty.
|
||||
</para>
|
||||
<para>
|
||||
A password field which starts with a exclamation mark means
|
||||
that the password is locked. The remaining characters on the
|
||||
line represent the password field before the password was
|
||||
locked.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@@ -133,7 +133,7 @@
|
||||
</para>
|
||||
<para>
|
||||
The value 0 has a special meaning, which is that the user
|
||||
should change her pasword the next time she will log in the
|
||||
should change her password the next time she will log in the
|
||||
system.
|
||||
</para>
|
||||
<para>
|
||||
@@ -228,7 +228,7 @@
|
||||
</para>
|
||||
<para>
|
||||
Note that an account expiration differs from a password
|
||||
expiration. In case of an acount expiration, the user shall
|
||||
expiration. In case of an account expiration, the user shall
|
||||
not be allowed to login. In case of a password expiration,
|
||||
the user is not allowed to login using her password.
|
||||
</para>
|
||||
|
||||
45
man/su.1.xml
45
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
|
||||
@@ -157,7 +156,7 @@
|
||||
</para>
|
||||
<para>
|
||||
The executed command will have no controlling terminal. This
|
||||
option cannot be used to execute interractive programs which
|
||||
option cannot be used to execute interactive programs which
|
||||
need a controlling TTY.
|
||||
<!-- This avoids TTY hijacking when su is used to lower
|
||||
privileges -->
|
||||
@@ -191,7 +190,7 @@
|
||||
<para>The shell that will be invoked.</para>
|
||||
<para>
|
||||
The invoked shell is chosen from (highest priority first):
|
||||
<!--This should be an orderedlist, but lists inside another
|
||||
<!--This should be an ordered list, but lists inside another
|
||||
list does not work well with current docbook.
|
||||
- nekral - 2009.06.03 -->
|
||||
<variablelist>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
<!-- .RS -->
|
||||
<literallayout remap='.nf'>
|
||||
1) the user su is targetting
|
||||
1) the user su is targeting
|
||||
</literallayout>
|
||||
<!-- .fi -->
|
||||
<para>
|
||||
@@ -106,13 +106,13 @@
|
||||
|
||||
<para>
|
||||
from-id is formatted the same as to-id except the extra word
|
||||
<emphasis>GROUP</emphasis> is recognised. <emphasis>ALL EXCEPT
|
||||
<emphasis>GROUP</emphasis> is recognized. <emphasis>ALL EXCEPT
|
||||
GROUP</emphasis> is perfectly valid too. Following
|
||||
<emphasis>GROUP</emphasis> appears one or more group names, delimited
|
||||
by ",". It is not sufficient to have primary group id of the relevant
|
||||
group, an entry in
|
||||
<citerefentry><refentrytitle>/etc/group</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry> is neccessary.
|
||||
<manvolnum>5</manvolnum></citerefentry> is necessary.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
||||
@@ -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>
|
||||
@@ -307,7 +318,7 @@
|
||||
</para>
|
||||
Example: <option>-K</option> <replaceable>PASS_MAX_DAYS</replaceable>=<replaceable>-1</replaceable>
|
||||
can be used when creating system account to turn off password
|
||||
ageing, even though system account has no password at all.
|
||||
aging, even though system account has no password at all.
|
||||
Multiple <option>-K</option> options can be specified, e.g.:
|
||||
<option>-K</option> <replaceable>UID_MIN</replaceable>=<replaceable>100</replaceable>
|
||||
<option>-K</option> <replaceable>UID_MAX</replaceable>=<replaceable>499</replaceable>
|
||||
@@ -326,7 +337,7 @@
|
||||
</para>
|
||||
<para>
|
||||
By default, the user's entries in the lastlog and faillog
|
||||
databases are resetted to avoid reusing the entry from a previously
|
||||
databases are reset to avoid reusing the entry from a previously
|
||||
deleted user.
|
||||
</para>
|
||||
</listitem>
|
||||
@@ -351,7 +362,7 @@
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-M</option>
|
||||
<option>-M</option>, <option>--no-create-home</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@@ -433,7 +444,7 @@
|
||||
</para>
|
||||
<para>
|
||||
Note that <command>useradd</command> will not create a home
|
||||
directory for such an user, regardless of the default setting
|
||||
directory for such a user, regardless of the default setting
|
||||
in <filename>/etc/login.defs</filename>
|
||||
(<option>CREATE_HOME</option>). You have to specify the
|
||||
<option>-m</option> options if you want a home directory for a
|
||||
@@ -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>
|
||||
@@ -481,8 +519,7 @@
|
||||
not executing any processes when this command is being executed if the
|
||||
user's numerical user ID, the user's name, or the user's home
|
||||
directory is being changed. <command>usermod</command> checks this
|
||||
on Linux, but only check if the user is logged in according to utmp
|
||||
on other architectures.
|
||||
on Linux. On other platforms it only uses utmp to check if the user is logged in.
|
||||
</para>
|
||||
<para>
|
||||
You must change the owner of any <command>crontab</command> files or
|
||||
@@ -501,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
|
||||
|
||||
175
po/bs.po
175
po/bs.po
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: shadow\n"
|
||||
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
|
||||
"POT-Creation-Date: 2012-05-20 19:52+0200\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2004-05-09 12:03+0100\n"
|
||||
"Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
|
||||
"Language-Team: Bosnian <lokal@lugbih.org>\n"
|
||||
@@ -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"
|
||||
|
||||
@@ -413,6 +408,10 @@ msgstr "nepoznata grupa: %s\n"
|
||||
msgid "%s: cannot access chroot directory %s: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: cannot chdir to chroot directory %s: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
@@ -481,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 ""
|
||||
|
||||
@@ -571,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"
|
||||
|
||||
@@ -747,6 +744,10 @@ msgstr ""
|
||||
msgid "%s: line %d: missing new password\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to crypt password with salt '%s': %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: line %d: group '%s' does not exist\n"
|
||||
msgstr "%s: grupa %s postoji\n"
|
||||
@@ -1006,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"
|
||||
|
||||
@@ -1015,10 +1015,14 @@ 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"
|
||||
|
||||
msgid ""
|
||||
" -f, --force delete group even if it is the primary group "
|
||||
"of a user\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgstr ""
|
||||
@@ -1209,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"
|
||||
|
||||
@@ -1226,6 +1229,16 @@ msgid ""
|
||||
" -b, --before DAYS print only lastlog records older than DAYS\n"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" -C, --clear clear lastlog record of an user (usable only "
|
||||
"with -u)\n"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" -S, --set set lastlog record to current time (usable "
|
||||
"only with -u)\n"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" -t, --time DAYS print only lastlog records more recent than "
|
||||
"DAYS\n"
|
||||
@@ -1244,6 +1257,22 @@ msgstr ""
|
||||
msgid "**Never logged in**"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: Failed to update the entry for UID %lu\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: Failed to update the lastlog file\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Option -C cannot be used together with option -S\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Options -C and -S require option -u to specify the user\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Usage: %s [-p] [name]\n"
|
||||
msgstr ""
|
||||
@@ -1273,12 +1302,6 @@ msgid ""
|
||||
"[Disconnect bypassed -- root login allowed.]"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Login timed out after %u seconds.\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Cannot possibly work without effective root\n"
|
||||
msgstr ""
|
||||
@@ -1286,6 +1309,12 @@ msgstr ""
|
||||
msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\""
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Login timed out after %u seconds.\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "login: PAM Failure, aborting: %s\n"
|
||||
msgstr ""
|
||||
@@ -1308,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"
|
||||
|
||||
@@ -1355,6 +1383,10 @@ msgstr ""
|
||||
msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Invalid password.\n"
|
||||
msgstr "Stara šifra:"
|
||||
@@ -1421,6 +1453,18 @@ msgstr "nepoznata grupa: %s\n"
|
||||
msgid "%s: line %d: can't update entry\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to prepare new %s entry\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: can't find subordinate user range\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: can't find subordinate group range\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
msgid ""
|
||||
" -a, --all report password status on all accounts\n"
|
||||
msgstr ""
|
||||
@@ -1546,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"
|
||||
|
||||
@@ -1587,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"
|
||||
|
||||
@@ -1612,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"
|
||||
|
||||
@@ -1660,14 +1701,7 @@ msgstr ""
|
||||
msgid "Please enter your OWN password as authentication.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " ...killed.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " ...waiting for child to terminate.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: Cannot fork user shell\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -1682,13 +1716,19 @@ msgstr ""
|
||||
msgid "Session terminated, terminating shell..."
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s\n"
|
||||
msgid " ...killed.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " ...waiting for child to terminate.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " ...terminated.\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Usage: su [options] [LOGIN]\n"
|
||||
"\n"
|
||||
@@ -1742,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"
|
||||
|
||||
@@ -1930,6 +1969,10 @@ msgstr ""
|
||||
msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to prepare the new %s entry\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot create directory %s\n"
|
||||
msgstr ""
|
||||
@@ -1969,6 +2012,14 @@ msgstr ""
|
||||
msgid "%s: can't create group\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: can't create subordinate user IDs\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: can't create subordinate group IDs\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: warning: the home directory already exists.\n"
|
||||
@@ -2005,6 +2056,10 @@ msgstr ""
|
||||
msgid "%s: group %s is the primary group of another user and is not removed.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
msgstr ""
|
||||
@@ -2022,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"
|
||||
|
||||
@@ -2079,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"
|
||||
@@ -2107,6 +2161,18 @@ msgstr ""
|
||||
msgid " -U, --unlock unlock the user account\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -v, --add-subuids FIRST-LAST add range of subordinate uids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -V, --del-subuids FIRST-LAST remove range of subordinate uids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -w, --add-subgids FIRST-LAST add range of subordinate gids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -W, --del-subgids FIRST-LAST remove range of subordinate gids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" -Z, --selinux-user SEUSER new SELinux user mapping for the user "
|
||||
"account\n"
|
||||
@@ -2123,7 +2189,14 @@ msgid "%s: user '%s' already exists in %s\n"
|
||||
msgstr "%s: grupa %s postoji\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "%s: unknown member %s\n"
|
||||
msgid "%s: invalid subordinate uid range '%s'\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: nepoznat član %s\n"
|
||||
|
||||
@@ -2139,6 +2212,10 @@ msgstr ""
|
||||
msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s does not exist, you cannot use the flags %s or %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: directory %s exists\n"
|
||||
msgstr ""
|
||||
@@ -2179,6 +2256,22 @@ msgstr ""
|
||||
msgid "failed to rename mailbox"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to remove uid range %lu-%lu from '%s'\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: failed to add uid range %lu-%lu from '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to remove gid range %lu-%lu from '%s'\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: failed to add gid range %lu-%lu from '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You have modified %s.\n"
|
||||
@@ -2227,6 +2320,18 @@ msgstr ""
|
||||
msgid "Couldn't make backup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "nepoznata grupa: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s killed by signal %d\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "failed to open scratch file"
|
||||
msgstr ""
|
||||
|
||||
|
||||
183
po/ca.po
183
po/ca.po
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: shadow 4.0.18\n"
|
||||
"Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n"
|
||||
"POT-Creation-Date: 2012-05-20 19:52+0200\n"
|
||||
"POT-Creation-Date: 2016-09-18 14:03-0500\n"
|
||||
"PO-Revision-Date: 2012-01-22 18:25+0100\n"
|
||||
"Last-Translator: Innocent De Marchi <tangram.peces@gmail.com>\n"
|
||||
"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
|
||||
@@ -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"
|
||||
|
||||
@@ -429,6 +428,10 @@ msgstr "%s: camí «chroot» incorrecta «%s»\n"
|
||||
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 chdir to chroot directory %s: %s\n"
|
||||
msgstr "%s: no es pot accedir al directori «chroot» %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: unable to chroot to directory %s: %s\n"
|
||||
msgstr "%s: no es pot executar «chroot» en el directori %s: %s\n"
|
||||
@@ -513,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"
|
||||
@@ -802,6 +806,10 @@ msgstr "%s: línia %d: la línia és massa llarga\n"
|
||||
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 crypt password with salt '%s': %s\n"
|
||||
msgstr "%s: Error en escriure %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: line %d: group '%s' does not exist\n"
|
||||
msgstr "%s: línia %d: el grup «%s» no existeix\n"
|
||||
@@ -1120,6 +1128,14 @@ msgstr "%s: el GID '%lu ja existeix\n"
|
||||
msgid "%s: Cannot setup cleanup service.\n"
|
||||
msgstr "%s: no es pot configurar el servei de neteja.\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
" -f, --force delete group even if it is the primary group "
|
||||
"of a user\n"
|
||||
msgstr ""
|
||||
" -r, --reset restableix els comptadors d'errors "
|
||||
"d'identificació\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot remove entry '%s' from %s\n"
|
||||
msgstr "%s: no es pot eliminar l'entrada «%s» de %s\n"
|
||||
@@ -1350,6 +1366,22 @@ msgstr ""
|
||||
" -b, --before DIES mostra només els registres de lastlog més\n"
|
||||
" antics que DIES\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
" -C, --clear clear lastlog record of an user (usable only "
|
||||
"with -u)\n"
|
||||
msgstr ""
|
||||
" -a, --all mostra els registres «faillog» per a tots "
|
||||
"els usuaris\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
" -S, --set set lastlog record to current time (usable "
|
||||
"only with -u)\n"
|
||||
msgstr ""
|
||||
" -a, --all mostra els registres «faillog» per a tots "
|
||||
"els usuaris\n"
|
||||
|
||||
msgid ""
|
||||
" -t, --time DAYS print only lastlog records more recent than "
|
||||
"DAYS\n"
|
||||
@@ -1371,6 +1403,22 @@ msgstr "Usuari Port Últim"
|
||||
msgid "**Never logged in**"
|
||||
msgstr "**No ha entrat mai**"
|
||||
|
||||
#, fuzzy, c-format
|
||||
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: Failed to update the lastlog file\n"
|
||||
msgstr "%s: no es pot actualitzar el fitxer de contrasenyes\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Option -C cannot be used together with option -S\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Options -C and -S require option -u to specify the user\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Usage: %s [-p] [name]\n"
|
||||
msgstr "Forma d'ús: %s [-p] [nom]\n"
|
||||
@@ -1404,14 +1452,6 @@ msgstr ""
|
||||
"\n"
|
||||
"[S'ha evitat la desconnexió -- l'accés de «root» està permès]."
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Login timed out after %u seconds.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"L'accés ha caducat després de %u segons.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Cannot possibly work without effective root\n"
|
||||
msgstr "%s: no es pot treballar sense ésser administrador\n"
|
||||
@@ -1420,6 +1460,14 @@ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\""
|
||||
msgstr ""
|
||||
"No hi ha entrada utmp. Heu d'executar «login» des del «sh» de nivell més baix"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Login timed out after %u seconds.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"L'accés ha caducat després de %u segons.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "login: PAM Failure, aborting: %s\n"
|
||||
msgstr "login: fallada de PAM, s'està cancel·lant: %s\n"
|
||||
@@ -1492,6 +1540,10 @@ msgstr "Forma d'ús: newgrp [-] [grup]\n"
|
||||
msgid "Usage: sg group [[-c] command]\n"
|
||||
msgstr "Forma d'ús: sg grup [[-c] ordre]\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: failed to crypt password with previous salt: %s\n"
|
||||
msgstr "%s: Error en escriure %s: %s\n"
|
||||
|
||||
msgid "Invalid password.\n"
|
||||
msgstr "Contrasenya no vàlida.\n"
|
||||
|
||||
@@ -1561,6 +1613,18 @@ msgstr ""
|
||||
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 new %s entry\n"
|
||||
msgstr "%s: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
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 find subordinate group range\n"
|
||||
msgstr "%s: no es pot actualitzar el fitxer de grups\n"
|
||||
|
||||
msgid ""
|
||||
" -a, --all report password status on all accounts\n"
|
||||
msgstr ""
|
||||
@@ -1833,12 +1897,6 @@ msgstr "S'ha evitat l'autenticació de contrasenya.\n"
|
||||
msgid "Please enter your OWN password as authentication.\n"
|
||||
msgstr "Si us plau introduïu la VOSTRA contrasenya com a autenticació.\n"
|
||||
|
||||
msgid " ...killed.\n"
|
||||
msgstr "...mort.\n"
|
||||
|
||||
msgid " ...waiting for child to terminate.\n"
|
||||
msgstr "...esperant al fill per acabar.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: Cannot fork user shell\n"
|
||||
msgstr "%s: no es pot blocar el «shell» de l'usuari\n"
|
||||
@@ -1854,13 +1912,19 @@ msgstr "%s: el senyal emmascara un error\n"
|
||||
msgid "Session terminated, terminating shell..."
|
||||
msgstr "Sessió acabada, finalitzant el «shell»..."
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
msgid " ...killed.\n"
|
||||
msgstr "...mort.\n"
|
||||
|
||||
msgid " ...waiting for child to terminate.\n"
|
||||
msgstr "...esperant al fill per acabar.\n"
|
||||
|
||||
msgid " ...terminated.\n"
|
||||
msgstr "...acabat.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s\n"
|
||||
msgstr "%s: %s\n"
|
||||
|
||||
msgid ""
|
||||
"Usage: su [options] [LOGIN]\n"
|
||||
"\n"
|
||||
@@ -1973,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"
|
||||
|
||||
@@ -2147,6 +2210,10 @@ msgstr ""
|
||||
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\n"
|
||||
msgstr "%s: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: cannot create directory %s\n"
|
||||
msgstr "%s: no es pot crear el directori %s\n"
|
||||
@@ -2190,6 +2257,14 @@ msgstr "%s: no es pot generar el directori «tcb» per a %s\n"
|
||||
msgid "%s: can't create group\n"
|
||||
msgstr "%s: no es pot generar el grup\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
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 subordinate group IDs\n"
|
||||
msgstr "%s: no es pot generar el grup\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: warning: the home directory already exists.\n"
|
||||
@@ -2239,6 +2314,10 @@ msgstr ""
|
||||
"%s: no es pot eliminar el grup %s, que és el grup primari per un altre "
|
||||
"usuari.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: cannot remove entry %lu from %s\n"
|
||||
msgstr "%s: no es pot eliminar l'entrada «%s» de %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s mail spool (%s) not found\n"
|
||||
msgstr "%s: %s no s'ha trobat la cua de correu (%s)\n"
|
||||
@@ -2325,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"
|
||||
@@ -2360,6 +2439,18 @@ msgstr " -u, --uid UID nou UID per al compte d'usuari\n"
|
||||
msgid " -U, --unlock unlock the user account\n"
|
||||
msgstr " -U, --unlock desbloca el compte d'usuari\n"
|
||||
|
||||
msgid " -v, --add-subuids FIRST-LAST add range of subordinate uids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -V, --del-subuids FIRST-LAST remove range of subordinate uids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -w, --add-subgids FIRST-LAST add range of subordinate gids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " -W, --del-subgids FIRST-LAST remove range of subordinate gids\n"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
" -Z, --selinux-user SEUSER new SELinux user mapping for the user "
|
||||
"account\n"
|
||||
@@ -2381,6 +2472,14 @@ msgstr ""
|
||||
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 subordinate uid range '%s'\n"
|
||||
msgstr "%s: la data «%s» no és vàlida\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: invalid subordinate gid range '%s'\n"
|
||||
msgstr "%s: la data «%s» no és vàlida\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: no options\n"
|
||||
msgstr "%s: sense opcions\n"
|
||||
@@ -2397,6 +2496,10 @@ msgstr "%s: les contrasenyes ombra són obligatòries per a «-e» i «-f»\n"
|
||||
msgid "%s: UID '%lu' already exists\n"
|
||||
msgstr "%s: UID '%lu' ja existeix\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
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"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: directory %s exists\n"
|
||||
msgstr "%s: el directori %s ja existeix\n"
|
||||
@@ -2444,6 +2547,22 @@ msgstr "no s'ha pogut canviar el propietari de la bústia de correu"
|
||||
msgid "failed to rename mailbox"
|
||||
msgstr "no s'ha pogut reanomenar la bústia de correu"
|
||||
|
||||
#, fuzzy, c-format
|
||||
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 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 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 add gid range %lu-%lu from '%s'\n"
|
||||
msgstr "%s: ha fallat la preparació de la nova entrada %s: «%s»\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You have modified %s.\n"
|
||||
@@ -2499,6 +2618,18 @@ msgstr "No s'ha pogut blocar el fitxer"
|
||||
msgid "Couldn't make backup"
|
||||
msgstr "No s'ha pogut fer una còpia de seguretat"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr "%s: PAM: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "%s: %s returned with status %d\n"
|
||||
msgstr "%s: «nscd» ha sortit amb l'estat %d"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: %s killed by signal %d\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "failed to open scratch file"
|
||||
msgstr "no s'ha pogut obrir el fitxer de treball («scratch file»)"
|
||||
|
||||
@@ -2809,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"
|
||||
@@ -3132,9 +3263,6 @@ msgstr "%s: no es pot trobar el directori «tcb» per %s\n"
|
||||
#~ msgid "%s: can't rewrite password file\n"
|
||||
#~ msgstr "%s: no es pot reescriure el fitxer de contrasenyes\n"
|
||||
|
||||
#~ msgid "%s: can't update password file\n"
|
||||
#~ msgstr "%s: no es pot actualitzar el fitxer de contrasenyes\n"
|
||||
|
||||
#~ msgid "%s: can't update shadow password file\n"
|
||||
#~ msgstr "%s: no es pot actualitzar el fitxer de contrasenyes ombra\n"
|
||||
|
||||
@@ -3371,9 +3499,6 @@ msgstr "%s: no es pot trobar el directori «tcb» per %s\n"
|
||||
#~ msgid "%s: can't update shadow group file\n"
|
||||
#~ msgstr "%s: no es pot actualitzar el fitxer de grups ombra\n"
|
||||
|
||||
#~ msgid "%s: can't update group file\n"
|
||||
#~ msgstr "%s: no es pot actualitzar el fitxer de grups\n"
|
||||
|
||||
#~ msgid "%s: can't delete shadow group file\n"
|
||||
#~ msgstr "%s: no es pot eliminar el fitxer de grups ombra\n"
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user